From bf49b0e5f508b0d0beb7ac01b567a2b9772cc1ff Mon Sep 17 00:00:00 2001 From: Jakub Klama Date: Wed, 3 Feb 2016 10:05:24 +0100 Subject: [PATCH] Import changes from lib9p repo: - Integrate (slightly modified) pull request #1 from ailispaw. (https://github.com/jceel/xhyve/pull/1) - Populate file->gid from parent fid. --- lib9p/backend/fs.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/lib9p/backend/fs.c b/lib9p/backend/fs.c index 9248764..e410368 100644 --- a/lib9p/backend/fs.c +++ b/lib9p/backend/fs.c @@ -536,9 +536,16 @@ fs_remove(void *softc, struct l9p_request *req) return; } - if (unlink(file->name) != 0) { - l9p_respond(req, errno); - return; + if (S_ISDIR(st.st_mode)) { + if (rmdir(file->name) != 0) { + l9p_respond(req, errno); + return; + } + } else { + if (unlink(file->name) != 0) { + l9p_respond(req, errno); + return; + } } l9p_respond(req, 0); @@ -584,6 +591,7 @@ fs_walk(void *softc __unused, struct l9p_request *req) newfile = open_fid(name); newfile->uid = file->uid; + newfile->gid = file->gid; req->lr_newfid->lo_aux = newfile; req->lr_resp.rwalk.nwqid = i; l9p_respond(req, 0); @@ -682,15 +690,8 @@ fs_wstat(void *softc, struct l9p_request *req) } } - if (l9stat->n_uid != (uid_t)~0) { - if (lchown(file->name, l9stat->n_uid, (gid_t)-1) != 0) { - l9p_respond(req, errno); - return; - } - } - - if (l9stat->n_gid != (uid_t)~0) { - if (lchown(file->name, (uid_t)-1, l9stat->n_gid) != 0) { + if (req->lr_conn->lc_version >= L9P_2000U) { + if (lchown(file->name, l9stat->n_uid, l9stat->n_gid) != 0) { l9p_respond(req, errno); return; }