From: adilger Date: Wed, 30 Nov 2005 21:46:23 +0000 (+0000) Subject: Branch b_release_1_4_6 X-Git-Tag: v1_7_100~1^103~4^2~218 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=f4f64c8def63c1cfad147b9a9e4312573f42e9f9;p=fs%2Flustre-release.git Branch b_release_1_4_6 - fix build for 2.4 UML kernels that don't have ACL support --- diff --git a/lustre/include/linux/lustre_compat25.h b/lustre/include/linux/lustre_compat25.h index 6169d34..aec7982 100644 --- a/lustre/include/linux/lustre_compat25.h +++ b/lustre/include/linux/lustre_compat25.h @@ -172,10 +172,16 @@ static inline int cleanup_group_info(void) #define hlist_node list_head #define HLIST_HEAD LIST_HEAD #define INIT_HLIST_HEAD INIT_LIST_HEAD -#define INIT_HLIST_NODE(p) (p) #define hlist_del_init list_del_init #define hlist_add_head list_add +#endif +#ifndef INIT_HLIST_NODE +#define INIT_HLIST_NODE(p) ((p)->next = NULL, (p)->prev = NULL) +#endif +#ifndef hlist_for_each #define hlist_for_each list_for_each +#endif +#ifndef hlist_for_each_safe #define hlist_for_each_safe list_for_each_safe #endif #define KDEVT_INIT(val) (val) diff --git a/lustre/include/linux/lustre_disk.h b/lustre/include/linux/lustre_disk.h index de9e33c..43cfba2 100644 --- a/lustre/include/linux/lustre_disk.h +++ b/lustre/include/linux/lustre_disk.h @@ -7,18 +7,15 @@ */ #ifndef _LUSTRE_DISK_H #define _LUSTRE_DISK_H_ -#define LAST_RCVD "last_rcvd" -#define LOV_OBJID "lov_objid" -#define OBD_COMPAT_OST 0x00000002 /* this is an OST (temporary) */ -#define OBD_COMPAT_MDT 0x00000004 /* this is an MDT (temporary) */ +#include -#define OBD_ROCOMPAT_LOVOBJID 0x00000001 /* MDS handles LOV_OBJID file */ -#define OBD_ROCOMPAT_CROW 0x00000002 /* OST will CROW create objects */ +#include -#define OBD_INCOMPAT_GROUPS 0x00000001 /* OST handles group subdirs */ -#define OBD_INCOMPAT_OST 0x00000002 /* this is an OST (permanent) */ -#define OBD_INCOMPAT_MDT 0x00000004 /* this is an MDT (permanent) */ +/****************** last_rcvd file *********************/ + +#define LAST_RCVD "last_rcvd" +#define LOV_OBJID "lov_objid" #define LR_SERVER_SIZE 512 #define LR_CLIENT_START 8192 @@ -30,6 +27,16 @@ * 2^n * PAGE_SIZE * 8 for the number of bits that fit an order-n allocation. */ #define LR_MAX_CLIENTS (PAGE_SIZE * 8) +#define OBD_COMPAT_OST 0x00000002 /* this is an OST (temporary) */ +#define OBD_COMPAT_MDT 0x00000004 /* this is an MDT (temporary) */ + +#define OBD_ROCOMPAT_LOVOBJID 0x00000001 /* MDS handles LOV_OBJID file */ +#define OBD_ROCOMPAT_CROW 0x00000002 /* OST will CROW create objects */ + +#define OBD_INCOMPAT_GROUPS 0x00000001 /* OST handles group subdirs */ +#define OBD_INCOMPAT_OST 0x00000002 /* this is an OST (permanent) */ +#define OBD_INCOMPAT_MDT 0x00000004 /* this is an MDT (permanent) */ + /* Data stored per client in the last_rcvd file. In le32 order. */ struct lsd_client_data { __u8 lcd_uuid[40]; /* client UUID */ diff --git a/lustre/include/linux/lustre_fsfilt.h b/lustre/include/linux/lustre_fsfilt.h index a5e1d4f..582fa8c 100644 --- a/lustre/include/linux/lustre_fsfilt.h +++ b/lustre/include/linux/lustre_fsfilt.h @@ -40,6 +40,7 @@ struct fsfilt_objinfo { #define XATTR_LUSTRE_MDS_LOV_EA "lov" +struct lustre_dquot; struct fsfilt_operations { struct list_head fs_list; struct module *fs_owner; diff --git a/lustre/include/linux/lustre_idl.h b/lustre/include/linux/lustre_idl.h index 56760fa..00ea432 100644 --- a/lustre/include/linux/lustre_idl.h +++ b/lustre/include/linux/lustre_idl.h @@ -428,7 +428,7 @@ struct obd_statfs { __u32 os_bsize; __u32 os_namelen; __u64 os_maxbytes; - __u32 os_state; + __u32 os_state; /* positive error code on server */ __u32 os_spare1; __u32 os_spare2; __u32 os_spare3; diff --git a/lustre/include/linux/lustre_import.h b/lustre/include/linux/lustre_import.h index 4cb5520..8ff15be 100644 --- a/lustre/include/linux/lustre_import.h +++ b/lustre/include/linux/lustre_import.h @@ -92,6 +92,7 @@ struct obd_import { imp_deactive:1; __u32 imp_connect_op; struct obd_connect_data imp_connect_data; + __u64 imp_connect_flags_orig; }; #define IMP_CROW_ABLE(imp) \ diff --git a/lustre/ldlm/ldlm_lib.c b/lustre/ldlm/ldlm_lib.c index 8c9d9cd..90bb3a9 100644 --- a/lustre/ldlm/ldlm_lib.c +++ b/lustre/ldlm/ldlm_lib.c @@ -374,8 +374,10 @@ int client_connect_import(struct lustre_handle *dlm_handle, GOTO(out_ldlm, rc); ocd = &imp->imp_connect_data; - if (data) + if (data) { *ocd = *data; + imp->imp_connect_flags_orig = data->ocd_connect_flags; + } rc = ptlrpc_connect_import(imp, NULL); if (rc != 0) { diff --git a/lustre/liblustre/super.c b/lustre/liblustre/super.c index 2ba2f36..0944ba6 100644 --- a/lustre/liblustre/super.c +++ b/lustre/liblustre/super.c @@ -289,6 +289,10 @@ void obdo_from_inode(struct obdo *dst, struct inode *src, obd_flag valid) dst->o_generation = lli->lli_st_generation; newvalid |= OBD_MD_FLGENER; } + if (valid & OBD_MD_FLFID) { + dst->o_fid = st->st_ino; + newvalid |= OBD_MD_FLFID; + } dst->o_valid |= newvalid; } @@ -343,14 +347,14 @@ static struct inode* llu_new_inode(struct filesys *fs, struct inode *inode; struct llu_inode_info *lli; struct intnl_stat st = { - st_dev: 0, + .st_dev = 0, #ifndef AUTOMOUNT_FILE_NAME - st_mode: fid->f_type & S_IFMT, + .st_mode = fid->f_type & S_IFMT, #else - st_mode: fid->f_type /* all of the bits! */ + .st_mode = fid->f_type /* all of the bits! */ #endif - st_uid: geteuid(), - st_gid: getegid(), + .st_uid = geteuid(), + .st_gid = getegid(), }; OBD_ALLOC(lli, sizeof(*lli)); @@ -367,8 +371,7 @@ static struct inode* llu_new_inode(struct filesys *fs, lli->lli_sysio_fid.fid_data = &lli->lli_fid; lli->lli_sysio_fid.fid_len = sizeof(lli->lli_fid); - - memcpy(&lli->lli_fid, fid, sizeof(*fid)); + lli->lli_fid = *fid; /* file identifier is needed by functions like _sysio_i_find() */ inode = _sysio_i_new(fs, &lli->lli_sysio_fid, diff --git a/lustre/llite/file.c b/lustre/llite/file.c index 0d9968f..669c367 100644 --- a/lustre/llite/file.c +++ b/lustre/llite/file.c @@ -1594,6 +1594,7 @@ int ll_getattr(struct vfsmount *mnt, struct dentry *de, static int lustre_check_acl(struct inode *inode, int mask) { +#ifdef CONFIG_FS_POSIX_ACL struct ll_inode_info *lli = ll_i2info(inode); struct posix_acl *acl; int rc; @@ -1610,6 +1611,9 @@ int lustre_check_acl(struct inode *inode, int mask) posix_acl_release(acl); RETURN(rc); +#else + return 0; +#endif } #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,10)) diff --git a/lustre/llite/llite_internal.h b/lustre/llite/llite_internal.h index 35fa8c7..fec82be 100644 --- a/lustre/llite/llite_internal.h +++ b/lustre/llite/llite_internal.h @@ -240,10 +240,6 @@ extern spinlock_t inode_lock; extern struct proc_dir_entry *proc_lustre_fs_root; -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) -# define hlist_del_init list_del_init -#endif - static inline struct inode *ll_info2i(struct ll_inode_info *lli) { #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) diff --git a/lustre/llite/llite_lib.c b/lustre/llite/llite_lib.c index e8db04e..d8d0414 100644 --- a/lustre/llite/llite_lib.c +++ b/lustre/llite/llite_lib.c @@ -157,8 +157,7 @@ int lustre_common_fill_super(struct super_block *sb, char *mdc, char *osc) data->ocd_connect_flags |= OBD_CONNECT_RDONLY; if (sbi->ll_flags & LL_SBI_USER_XATTR) data->ocd_connect_flags |= OBD_CONNECT_USER_XATTR; - if (sbi->ll_flags & LL_SBI_ACL) - data->ocd_connect_flags |= OBD_CONNECT_ACL; + data->ocd_connect_flags |= OBD_CONNECT_ACL; if (sbi->ll_flags & LL_SBI_FLOCK) { sbi->ll_fop = &ll_file_operations_flock; @@ -199,11 +198,10 @@ int lustre_common_fill_super(struct super_block *sb, char *mdc, char *osc) sbi->ll_flags &= ~LL_SBI_USER_XATTR; } - if (((sbi->ll_flags & LL_SBI_ACL) == 0) != - ((data->ocd_connect_flags & OBD_CONNECT_ACL) == 0)) { - CERROR("Server return unexpected ACL flags\n"); - GOTO(out_mdc, err = -EBADE); - } + if (data->ocd_connect_flags & OBD_CONNECT_ACL) + sbi->ll_flags |= LL_SBI_ACL; + else + sbi->ll_flags &= ~LL_SBI_ACL; #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0)) /* We set sb->s_dev equal on all lustre clients in order to support @@ -261,7 +259,8 @@ int lustre_common_fill_super(struct super_block *sb, char *mdc, char *osc) /* make root inode * XXX: move this to after cbd setup? */ err = mdc_getattr(sbi->ll_mdc_exp, &rootfid, - OBD_MD_FLGETATTR | OBD_MD_FLBLOCKS | OBD_MD_FLACL, + OBD_MD_FLGETATTR | OBD_MD_FLBLOCKS | + (sbi->ll_flags & LL_SBI_ACL ? OBD_MD_FLACL : 0), 0, &request); if (err) { CERROR("mdc_getattr failed for root: rc = %d\n", err); @@ -484,12 +483,13 @@ void ll_options(char *options, char **ost, char **mdc, int *flags) } tmp = ll_set_opt("acl", this_char, LL_SBI_ACL); if (tmp) { - *flags |= tmp; + /* Ignore deprecated mount option. The client will + * always try to mount with ACL support, whether this + * is used depends on whether server supports it. */ continue; } tmp = ll_set_opt("noacl", this_char, LL_SBI_ACL); if (tmp) { - *flags &= ~tmp; continue; } } @@ -617,12 +617,7 @@ int lustre_process_log(struct lustre_mount_data *lmd, char * profile, if (rc) GOTO(out_cleanup, rc); - if (lmd->lmd_flags & LMD_FLG_ACL) { - OBD_ALLOC(ocd, sizeof(*ocd)); - if (ocd == NULL) - GOTO(out_cleanup, rc = -ENOMEM); - ocd->ocd_connect_flags |= OBD_CONNECT_ACL; - } + ocd->ocd_connect_flags |= OBD_CONNECT_ACL; rc = obd_connect(&mdc_conn, obd, &mdc_uuid, ocd); if (rc) { @@ -741,8 +736,6 @@ int lustre_fill_super(struct super_block *sb, void *data, int silent) sbi->ll_flags |= LL_SBI_FLOCK; if (lmd->lmd_flags & LMD_FLG_USER_XATTR) sbi->ll_flags |= LL_SBI_USER_XATTR; - if (lmd->lmd_flags & LMD_FLG_ACL) - sbi->ll_flags |= LL_SBI_ACL; /* generate a string unique to this super, let's try the address of the super itself.*/ @@ -926,11 +919,13 @@ void ll_clear_inode(struct inode *inode) lli->lli_symlink_name = NULL; } +#ifdef CONFIG_FS_POSIX_ACL if (lli->lli_posix_acl) { LASSERT(atomic_read(&lli->lli_posix_acl->a_refcount) == 1); posix_acl_release(lli->lli_posix_acl); lli->lli_posix_acl = NULL; } +#endif lli->lli_inode_magic = LLI_INODE_DEAD; @@ -1298,6 +1293,7 @@ void ll_update_inode(struct inode *inode, struct lustre_md *md) inode->i_sb->s_blocksize); } +#ifdef CONFIG_FS_POSIX_ACL LASSERT(!md->posix_acl || (body->valid & OBD_MD_FLACL)); if (body->valid & OBD_MD_FLACL) { spin_lock(&lli->lli_lock); @@ -1306,6 +1302,7 @@ void ll_update_inode(struct inode *inode, struct lustre_md *md) lli->lli_posix_acl = md->posix_acl; spin_unlock(&lli->lli_lock); } +#endif if (body->valid & OBD_MD_FLID) inode->i_ino = body->ino; diff --git a/lustre/lov/lov_obd.c b/lustre/lov/lov_obd.c index c045db2..628dae2 100644 --- a/lustre/lov/lov_obd.c +++ b/lustre/lov/lov_obd.c @@ -2240,7 +2240,7 @@ struct obd_ops lov_obd_ops = { .o_notify = lov_notify, }; -static quota_interface_t *quota_interface = NULL; +static quota_interface_t *quota_interface; extern quota_interface_t lov_quota_interface; int __init lov_init(void) @@ -2253,7 +2253,7 @@ int __init lov_init(void) quota_interface = PORTAL_SYMBOL_GET(lov_quota_interface); init_obd_quota_ops(quota_interface, &lov_obd_ops); - + rc = class_register_type(&lov_obd_ops, lvars.module_vars, OBD_LOV_DEVICENAME); if (rc && quota_interface) diff --git a/lustre/lvfs/fsfilt_ext3.c b/lustre/lvfs/fsfilt_ext3.c index 1b20288..a0c9b34 100644 --- a/lustre/lvfs/fsfilt_ext3.c +++ b/lustre/lvfs/fsfilt_ext3.c @@ -53,6 +53,7 @@ #if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) #include #endif +#include #ifdef EXT3_MULTIBLOCK_ALLOCATOR #include @@ -414,13 +415,15 @@ static int fsfilt_ext3_setattr(struct dentry *dentry, void *handle, /* make sure _something_ gets set - so new inode * goes to disk (probably won't work over XFS */ if (!(iattr->ia_valid & (ATTR_MODE | ATTR_MTIME | ATTR_CTIME))){ - iattr->ia_valid |= ATTR_MODE; - iattr->ia_mode = inode->i_mode; + iattr->ia_valid |= ATTR_MTIME; + iattr->ia_mtime = inode->i_mtime; } } /* Don't allow setattr to change file type */ - iattr->ia_mode = (inode->i_mode & S_IFMT)|(iattr->ia_mode & ~S_IFMT); + if (iattr->ia_valid & ATTR_MODE) + iattr->ia_mode = (inode->i_mode & S_IFMT) | + (iattr->ia_mode & ~S_IFMT); /* We set these flags on the client, but have already checked perms * so don't confuse inode_change_ok. */ diff --git a/lustre/mdc/mdc_request.c b/lustre/mdc/mdc_request.c index 6ef0685..b7e3848 100644 --- a/lustre/mdc/mdc_request.c +++ b/lustre/mdc/mdc_request.c @@ -338,6 +338,7 @@ void mdc_store_inode_generation(struct ptlrpc_request *req, int reqoff, rec->cr_replayfid.generation, rec->cr_replayfid.id); } +#ifdef CONFIG_FS_POSIX_ACL static int mdc_unpack_acl(struct obd_export *exp, struct ptlrpc_request *req, struct lustre_md *md, unsigned int offset) @@ -376,6 +377,9 @@ int mdc_unpack_acl(struct obd_export *exp, struct ptlrpc_request *req, md->posix_acl = acl; return 0; } +#else +#define mdc_unpack_acl(exp, req, md, offset) 0 +#endif int mdc_req2lustre_md(struct ptlrpc_request *req, int offset, struct obd_export *exp, @@ -441,10 +445,12 @@ void mdc_free_lustre_md(struct obd_export *exp, struct lustre_md *md) if (md->lsm) obd_free_memmd(exp, &md->lsm); +#ifdef CONFIG_FS_POSIX_ACL if (md->posix_acl) { posix_acl_release(md->posix_acl); md->posix_acl = NULL; } +#endif } static void mdc_commit_open(struct ptlrpc_request *req) @@ -1241,7 +1247,7 @@ struct obd_ops mdc_obd_ops = { .o_llog_finish = mdc_llog_finish, }; -static quota_interface_t *quota_interface = NULL; +static quota_interface_t *quota_interface; extern quota_interface_t mdc_quota_interface; int __init mdc_init(void) @@ -1249,10 +1255,10 @@ int __init mdc_init(void) int rc; struct lprocfs_static_vars lvars; lprocfs_init_vars(mdc, &lvars); - + quota_interface = PORTAL_SYMBOL_GET(mdc_quota_interface); init_obd_quota_ops(quota_interface, &mdc_obd_ops); - + rc = class_register_type(&mdc_obd_ops, lvars.module_vars, LUSTRE_MDC_NAME); if (rc && quota_interface) diff --git a/lustre/mds/handler.c b/lustre/mds/handler.c index 2964d6f0..9acef0c 100644 --- a/lustre/mds/handler.c +++ b/lustre/mds/handler.c @@ -294,25 +294,25 @@ static int mds_connect(struct lustre_handle *conn, struct obd_device *obd, if (data != NULL) { data->ocd_connect_flags &= MDS_CONNECT_SUPPORTED; + if (!obd->u.mds.mds_fl_acl) + data->ocd_connect_flags &= ~OBD_CONNECT_ACL; + if (!obd->u.mds.mds_fl_user_xattr) data->ocd_connect_flags &= ~OBD_CONNECT_USER_XATTR; exp->exp_connect_flags = data->ocd_connect_flags; } - if ((obd->u.mds.mds_fl_acl == 0) != + if (obd->u.mds.mds_fl_acl && ((exp->exp_connect_flags & OBD_CONNECT_ACL) == 0)) { - CWARN("%s require ACL support but %s doesn't\n", - obd->u.mds.mds_fl_acl ? "MDS" : "client", - obd->u.mds.mds_fl_acl ? "client" : "MDS"); + CWARN("%s: MDS requires ACL support but client does not\n", + obd->obd_name); GOTO(out, rc = -EBADE); } OBD_ALLOC(mcd, sizeof(*mcd)); - if (!mcd) { - CERROR("mds: out of memory for client data\n"); + if (!mcd) GOTO(out, rc = -ENOMEM); - } memcpy(mcd->mcd_uuid, cluuid, sizeof(mcd->mcd_uuid)); med->med_mcd = mcd; @@ -524,6 +524,7 @@ int mds_pack_md(struct obd_device *obd, struct lustre_msg *msg, int offset, RETURN(rc); } +#ifdef CONFIG_FS_POSIX_ACL static int mds_pack_posix_acl(struct inode *inode, struct lustre_msg *repmsg, struct mds_body *repbody, int repoff) @@ -559,6 +560,9 @@ out: repbody->valid |= OBD_MD_FLACL; return 0; } +#else +#define mds_pack_posix_acl(inode, repmsg, repbody, repoff) 0 +#endif int mds_pack_acl(struct mds_export_data *med, struct inode *inode, struct lustre_msg *repmsg, struct mds_body *repbody, @@ -628,6 +632,7 @@ static int mds_getattr_internal(struct obd_device *obd, struct dentry *dentry, if (rc) RETURN(rc); +#ifdef CONFIG_FS_POSIX_ACL if ((req->rq_export->exp_connect_flags & OBD_CONNECT_ACL) && (reqbody->valid & OBD_MD_FLACL)) { rc = mds_pack_acl(&req->rq_export->exp_mds_data, @@ -638,6 +643,7 @@ static int mds_getattr_internal(struct obd_device *obd, struct dentry *dentry, if (body->aclsize) reply_off++; } +#endif RETURN(rc); } @@ -686,6 +692,7 @@ static int mds_getattr_pack_msg(struct ptlrpc_request *req, struct inode *inode, inode->i_size + 1, body->eadatasize); } +#ifdef CONFIG_FS_POSIX_ACL if ((req->rq_export->exp_connect_flags & OBD_CONNECT_ACL) && (body->valid & OBD_MD_FLACL)) { struct dentry de = { .d_inode = inode }; @@ -707,6 +714,7 @@ static int mds_getattr_pack_msg(struct ptlrpc_request *req, struct inode *inode, } bufcount++; } +#endif if (OBD_FAIL_CHECK(OBD_FAIL_MDS_GETATTR_PACK)) { CERROR("failed MDS_GETATTR_PACK test\n"); @@ -1664,20 +1672,29 @@ int mds_update_server_data(struct obd_device *obd, int force_sync) } static -void fsoptions_to_mds_flags(struct mds_obd *mds, const char *options) +void fsoptions_to_mds_flags(struct mds_obd *mds, char *options) { - const char *p = options; + char *p = options; while (*options) { + int len; + while (*p && *p != ',') p++; - if ((p - options == sizeof("user_xattr") - 1) && - !memcmp(options, "user_xattr", sizeof("user_xattr") - 1)) + len = p - options; + if (len == sizeof("user_xattr") - 1 && + memcmp(options, "user_xattr", len) == 0) { mds->mds_fl_user_xattr = 1; - else if ((p - options == sizeof("acl") - 1) && - !memcmp(options, "acl", sizeof("acl") - 1)) + } else if (len == sizeof("acl") - 1 && + memcmp(options, "acl", len) == 0) { +#ifdef CONFIG_FS_POSIX_ACL mds->mds_fl_acl = 1; +#else + CWARN("ignoring unsupported acl mount option\n"); + memmove(options, p, strlen(p) + 1); +#endif + } options = ++p; } @@ -1724,7 +1741,7 @@ static int mds_setup(struct obd_device *obd, obd_count len, void *buf) /* here we use "iopen_nopriv" hardcoded, because it affects MDS utility * and the rest of options are passed by mount options. Probably this * should be moved to somewhere else like startup scripts or lconf. */ - sprintf(options, "iopen_nopriv"); + strcpy(options, "iopen_nopriv"); if (LUSTRE_CFG_BUFLEN(lcfg, 4) > 0 && lustre_cfg_buf(lcfg, 4)) { sprintf(options + strlen(options), ",%s", @@ -2168,6 +2185,7 @@ static int mds_intent_policy(struct ldlm_namespace *ns, if ((req->rq_export->exp_connect_flags & OBD_CONNECT_ACL) && (it->opc & (IT_OPEN | IT_GETATTR | IT_LOOKUP))) + /* we should never allow OBD_CONNECT_ACL if not configured */ repsize[repbufcnt++] = LUSTRE_POSIX_ACL_MAX_SIZE; else if (it->opc & IT_UNLINK) repsize[repbufcnt++] = mds->mds_max_cookiesize; @@ -2446,9 +2464,6 @@ static struct obd_ops mdt_obd_ops = { .o_health_check = mdt_health_check, }; -quota_interface_t *quota_interface = NULL; -extern quota_interface_t mds_quota_interface; - static int __init mds_init(void) { int rc; diff --git a/lustre/osc/osc_request.c b/lustre/osc/osc_request.c index 489fed8..6052b2e 100644 --- a/lustre/osc/osc_request.c +++ b/lustre/osc/osc_request.c @@ -3358,7 +3358,7 @@ struct obd_ops sanosc_obd_ops = { }; #endif -static quota_interface_t *quota_interface = NULL; +static quota_interface_t *quota_interface; extern quota_interface_t osc_quota_interface; int __init osc_init(void) diff --git a/lustre/ost/ost_handler.c b/lustre/ost/ost_handler.c index 4bd848b..4e52544 100644 --- a/lustre/ost/ost_handler.c +++ b/lustre/ost/ost_handler.c @@ -138,6 +138,8 @@ static int ost_statfs(struct ptlrpc_request *req) osfs = lustre_msg_buf(req->rq_repmsg, 0, sizeof(*osfs)); req->rq_status = obd_statfs(req->rq_export->exp_obd, osfs, jiffies-HZ); + if (OBD_FAIL_CHECK_ONCE(OBD_FAIL_OST_ENOSPC)) + osfs->os_bfree = 64; if (req->rq_status != 0) CERROR("ost: statfs failed: rc %d\n", req->rq_status); diff --git a/lustre/utils/llmount.c b/lustre/utils/llmount.c index 7e8e41c..5f93784 100644 --- a/lustre/utils/llmount.c +++ b/lustre/utils/llmount.c @@ -60,7 +60,6 @@ void usage(FILE *out) "\t-o: filesystem mount options:\n" "\t\tflock/noflock: enable/disable flock support\n" "\t\tuser_xattr/nouser_xattr: enable/disable user extended attributes\n" - "\t\t{no}acl: enable/disable ACL support\n" ); exit(out != stdout); }