4 * Lustre Metadata Server (mds) request handler
6 * Copyright (C) 2001 Cluster File Systems, Inc.
8 * This code is issued under the GNU General Public License.
9 * See the file COPYING in this distribution
11 * by Peter Braam <braam@clusterfs.com>
13 * This server is single threaded at present (but can easily be multi threaded).
20 #include <linux/version.h>
21 #include <linux/module.h>
23 #include <linux/stat.h>
24 #include <linux/locks.h>
25 #include <linux/ext2_fs.h>
26 #include <linux/quotaops.h>
27 #include <asm/unistd.h>
28 #include <asm/uaccess.h>
29 #include <linux/obd_support.h>
30 #include <linux/obd.h>
31 #include <linux/lustre_lib.h>
32 #include <linux/lustre_idl.h>
33 #include <linux/lustre_mds.h>
34 #include <linux/obd_class.h>
36 extern struct mds_request *mds_prep_req(int size, int opcode, int namelen, char *name, int tgtlen, char *tgt);
39 int mds_reint_setattr(struct mds_request *req)
44 struct mds_rec_setattr *rec;
48 if (req->rq_req->tgtlen != sizeof(struct mds_rec_setattr) ) {
50 printk("mds: out of memory\n");
51 req->rq_status = -EINVAL;
54 rec = mds_req_tgt(req->rq_req);
56 mds_setattr_unpack(rec, &attr);
57 de = mds_fid2dentry(req->rq_obd, &rec->sa_fid, &mnt);
59 printk("mds_setattr: ino %ld\n", de->d_inode->i_ino);
61 rc = mds_pack_rep(NULL, 0, NULL, 0, &req->rq_rephdr, &req->rq_rep,
62 &req->rq_replen, &req->rq_repbuf);
65 printk("mds: out of memory\n");
66 req->rq_status = -ENOMEM;
70 req->rq_rephdr->seqno = req->rq_reqhdr->seqno;
72 req->rq_rephdr->status = notify_change(de, &attr);