Author: winnie Date: Fri May 9 10:01:16 2008 New Revision: 472 URL: http://svn.debian.org/wsvn/pkg-lustre/?sc=1&rev=472 Log: Try to backport
Added: trunk/debian/patches/bug13904-fix1.dpatch trunk/debian/patches/bug13904-fix3.dpatch Modified: trunk/debian/patches/00list trunk/debian/patches/bug13904-fix2.dpatch Modified: trunk/debian/patches/00list URL: http://svn.debian.org/wsvn/pkg-lustre/trunk/debian/patches/00list?rev=472&op=diff ============================================================================== --- trunk/debian/patches/00list (original) +++ trunk/debian/patches/00list Fri May 9 10:01:16 2008 @@ -25,5 +25,9 @@ bug6334-prevent_multiple_mounts.dpatch fix-lustre-manpage.dpatch enable-quota.dpatch + +#4 TB Issue: +bug13904-fix1.dpatch bug13904-fix2.dpatch +bug13904-fix3.dpatch bug15036-fix1.dpatch Added: trunk/debian/patches/bug13904-fix1.dpatch URL: http://svn.debian.org/wsvn/pkg-lustre/trunk/debian/patches/bug13904-fix1.dpatch?rev=472&op=file ============================================================================== --- trunk/debian/patches/bug13904-fix1.dpatch (added) +++ trunk/debian/patches/bug13904-fix1.dpatch Fri May 9 10:01:16 2008 @@ -1,0 +1,41 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Missing include of sys/quota.h + [EMAIL PROTECTED]@ +Index: lustre/lvfs/lustre_quota_fmt.c +=================================================================== +RCS file: /cvsroot/cfs/lustre-core/lvfs/lustre_quota_fmt.c,v +retrieving revision 1.1.2.2 +diff -p -u -r1.1.2.2 lustre_quota_fmt.c +--- ./lustre/lvfs/lustre_quota_fmt.c 27 Nov 2007 02:11:54 -0000 1.1.2.2 ++++ ./lustre/lvfs/lustre_quota_fmt.c 28 Nov 2007 14:28:53 -0000 +@@ -84,13 +84,10 @@ int lustre_check_quota_file(struct lustr + return check_quota_file(f, NULL, type, lqi->qi_version); + } + +-/* Read information header from quota file */ +-int lustre_read_quota_info(struct lustre_quota_info *lqi, int type) ++int lustre_read_quota_file_info(struct file* f, struct lustre_mem_dqinfo* info) + { + mm_segment_t fs; + struct lustre_disk_dqinfo dinfo; +- struct lustre_mem_dqinfo *info = &lqi->qi_info[type]; +- struct file *f = lqi->qi_files[type]; + ssize_t size; + loff_t offset = LUSTRE_DQINFOOFF; + +@@ -113,6 +110,12 @@ int lustre_read_quota_info(struct lustre + return 0; + } + ++/* Read information header from quota file */ ++int lustre_read_quota_info(struct lustre_quota_info *lqi, int type) ++{ ++ return lustre_read_quota_file_info(lqi->qi_files[type], &lqi->qi_info[type]); ++} ++ + /* Write information header to quota file */ + int lustre_write_quota_info(struct lustre_quota_info *lqi, int type) + { Modified: trunk/debian/patches/bug13904-fix2.dpatch URL: http://svn.debian.org/wsvn/pkg-lustre/trunk/debian/patches/bug13904-fix2.dpatch?rev=472&op=diff ============================================================================== --- trunk/debian/patches/bug13904-fix2.dpatch (original) +++ trunk/debian/patches/bug13904-fix2.dpatch Fri May 9 10:01:16 2008 @@ -4,14 +4,10 @@ ## DP: Missing include of sys/quota.h @DPATCH@ -Index: lustre/doc/lfs.1 -=================================================================== -RCS file: /cvsroot/cfs/lustre-core/doc/lfs.1,v -retrieving revision 1.4.18.3 -diff -p -u -r1.4.18.3 lfs.1 ---- ./lustre/doc/lfs.1 22 Nov 2007 22:59:38 -0000 1.4.18.3 -+++ ./lustre/doc/lfs.1 19 Dec 2007 20:24:32 -0000 -@@ -26,6 +26,8 @@ lfs \- Lustre utility to create a file w +diff -urNad lustre-1.6.4.3~/lustre/doc/lfs.1 lustre-1.6.4.3/lustre/doc/lfs.1 +--- lustre-1.6.4.3~/lustre/doc/lfs.1 2008-05-09 11:40:16.000000000 +0200 ++++ lustre-1.6.4.3/lustre/doc/lfs.1 2008-05-09 11:40:37.000000000 +0200 +@@ -26,6 +26,8 @@ .br .B lfs quotaoff [-ug] <filesystem> .br @@ -20,7 +16,7 @@ .B lfs setquota [-u|-g] <name> <block-softlimit> <block-hardlimit> \fB<inode-softlimit> <inode-hardlimit> <filesystem>\fR .br -@@ -68,6 +70,9 @@ To turn filesystem quotas on. Options sp +@@ -66,6 +68,9 @@ .B quotaoff [-ugf] <filesystem> To turn filesystem quotas off. Options specify quota for users (-u) groups (-g) and force (-f) .TP @@ -30,98 +26,10 @@ .B setquota [-u|-g] <name> <block-softlimit> <block-hardlimit> <inode-softlimit> <inode-hardlimit> <filesystem> To set filesystem quotas for users or groups. Limits are specific as blocks and inodes, see EXAMPLES .TP -Index: lustre/include/lustre_quota.h -=================================================================== -RCS file: /cvsroot/cfs/lustre-core/include/lustre_quota.h,v -retrieving revision 1.3.12.2 -diff -p -u -r1.3.12.2 lustre_quota.h ---- ./lustre/include/lustre_quota.h 12 Jul 2007 08:36:46 -0000 1.3.12.2 -+++ ./lustre/include/lustre_quota.h 19 Dec 2007 20:24:32 -0000 -@@ -42,12 +42,24 @@ struct lustre_mem_dqinfo { - struct lustre_quota_info { - struct file *qi_files[MAXQUOTAS]; - struct lustre_mem_dqinfo qi_info[MAXQUOTAS]; -+ lustre_quota_version_t qi_version; - }; - - #define DQ_STATUS_AVAIL 0x0 /* Available dquot */ - #define DQ_STATUS_SET 0x01 /* Sombody is setting dquot */ - #define DQ_STATUS_RECOVERY 0x02 /* dquot is in recovery */ - -+struct lustre_mem_dqblk { -+ __u64 dqb_bhardlimit; /* absolute limit on disk blks alloc */ -+ __u64 dqb_bsoftlimit; /* preferred limit on disk blks */ -+ __u64 dqb_curspace; /* current used space */ -+ __u64 dqb_ihardlimit; /* absolute limit on allocated inodes */ -+ __u64 dqb_isoftlimit; /* preferred inode limit */ -+ __u64 dqb_curinodes; /* current # allocated inodes */ -+ time_t dqb_btime; /* time limit for excessive disk use */ -+ time_t dqb_itime; /* time limit for excessive inode use */ -+}; -+ - struct lustre_dquot { - /* Hash list in memory, protect by dquot_hash_lock */ - struct list_head dq_hash; -@@ -63,7 +75,7 @@ struct lustre_dquot { - int dq_type; /* Type fo quota (USRQUOTA, GRPQUOUTA) */ - unsigned short dq_status; /* See DQ_STATUS_ */ - unsigned long dq_flags; /* See DQ_ in quota.h */ -- struct mem_dqblk dq_dqb; /* Diskquota usage */ -+ struct lustre_mem_dqblk dq_dqb; /* Diskquota usage */ - }; - - struct dquot_id { -@@ -77,6 +89,7 @@ struct dquot_id { - #define QFILE_INIT_INFO 4 - #define QFILE_RD_DQUOT 5 - #define QFILE_WR_DQUOT 6 -+#define QFILE_CONVERT 7 - - /* admin quotafile operations */ - #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) -@@ -88,6 +101,7 @@ int lustre_commit_dquot(struct lustre_dq - int lustre_init_quota_info(struct lustre_quota_info *lqi, int type); - int lustre_get_qids(struct file *file, struct inode *inode, int type, - struct list_head *list); -+int lustre_quota_convert(struct lustre_quota_info *lqi, int type); - #else - - #ifndef DQ_FAKE_B -@@ -122,6 +136,11 @@ static inline int lustre_init_quota_info - { - return 0; - } -+static inline int lustre_quota_convert(struct lustre_quota_info *lqi, -+ int type) -+{ -+ return 0; -+} - #endif /* KERNEL_VERSION(2,5,0) */ - - #define LL_DQUOT_OFF(sb) DQUOT_OFF(sb) -@@ -461,4 +480,14 @@ extern quota_interface_t mdc_quota_inter - extern quota_interface_t lov_quota_interface; - #endif - -+#define LUSTRE_ADMIN_QUOTAFILES_V1 {\ -+ "admin_quotafile.usr", /* user admin quotafile */\ -+ "admin_quotafile.grp" /* group admin quotafile */\ -+} -+ -+#define LUSTRE_ADMIN_QUOTAFILES_V2 {\ -+ "admin_quotafile_v2.usr", /* user admin quotafile */\ -+ "admin_quotafile_v2.grp" /* group admin quotafile */\ -+} -+ - #endif /* _LUSTRE_QUOTA_H */ -Index: lustre/include/linux/lustre_fsfilt.h -=================================================================== -RCS file: /cvsroot/cfs/lustre-core/include/linux/lustre_fsfilt.h,v -retrieving revision 1.41.32.4 -diff -p -u -r1.41.32.4 lustre_fsfilt.h ---- ./lustre/include/linux/lustre_fsfilt.h 3 Sep 2007 06:05:42 -0000 1.41.32.4 -+++ ./lustre/include/linux/lustre_fsfilt.h 19 Dec 2007 20:24:32 -0000 -@@ -404,7 +404,7 @@ static inline int fsfilt_quotainfo(struc +diff -urNad lustre-1.6.4.3~/lustre/include/linux/lustre_fsfilt.h lustre-1.6.4.3/lustre/include/linux/lustre_fsfilt.h +--- lustre-1.6.4.3~/lustre/include/linux/lustre_fsfilt.h 2008-05-09 11:40:16.000000000 +0200 ++++ lustre-1.6.4.3/lustre/include/linux/lustre_fsfilt.h 2008-05-09 11:40:37.000000000 +0200 +@@ -404,7 +404,7 @@ } static inline int fsfilt_qids(struct obd_device *obd, struct file *file, @@ -130,27 +38,19 @@ struct list_head *list) { if (obd->obd_fsops->fs_qids) -Index: lustre/include/lustre/lustre_idl.h -=================================================================== -RCS file: /cvsroot/cfs/lustre-core/include/lustre/lustre_idl.h,v -retrieving revision 1.3.12.16 -diff -p -u -r1.3.12.16 lustre_idl.h ---- ./lustre/include/lustre/lustre_idl.h 10 Dec 2007 19:21:55 -0000 1.3.12.16 -+++ ./lustre/include/lustre/lustre_idl.h 19 Dec 2007 20:24:33 -0000 -@@ -1493,4 +1493,5 @@ typedef enum { +diff -urNad lustre-1.6.4.3~/lustre/include/lustre/lustre_idl.h lustre-1.6.4.3/lustre/include/lustre/lustre_idl.h +--- lustre-1.6.4.3~/lustre/include/lustre/lustre_idl.h 2008-05-09 11:40:16.000000000 +0200 ++++ lustre-1.6.4.3/lustre/include/lustre/lustre_idl.h 2008-05-09 11:40:37.000000000 +0200 +@@ -1488,4 +1488,5 @@ #define QUOTA_RET_NOQUOTA 1 /* not support quota */ #define QUOTA_RET_NOLIMIT 2 /* quota limit isn't set */ #define QUOTA_RET_ACQUOTA 3 /* need to acquire extra quota */ + #endif -Index: lustre/include/lustre/lustre_user.h -=================================================================== -RCS file: /cvsroot/cfs/lustre-core/include/lustre/lustre_user.h,v -retrieving revision 1.18.34.1 -diff -p -u -r1.18.34.1 lustre_user.h ---- ./lustre/include/lustre/lustre_user.h 27 Sep 2007 05:09:22 -0000 1.18.34.1 -+++ ./lustre/include/lustre/lustre_user.h 19 Dec 2007 20:24:34 -0000 -@@ -163,12 +163,15 @@ static inline char *obd_uuid2str(struct +diff -urNad lustre-1.6.4.3~/lustre/include/lustre/lustre_user.h lustre-1.6.4.3/lustre/include/lustre/lustre_user.h +--- lustre-1.6.4.3~/lustre/include/lustre/lustre_user.h 2008-05-09 11:40:16.000000000 +0200 ++++ lustre-1.6.4.3/lustre/include/lustre/lustre_user.h 2008-05-09 11:40:37.000000000 +0200 +@@ -163,12 +163,15 @@ return (char *)(uuid->uuid); } @@ -172,7 +72,7 @@ #define UGQUOTA 2 /* set both USRQUOTA and GRPQUOTA */ -@@ -218,6 +221,11 @@ struct mds_grp_downcall_data { +@@ -218,6 +221,11 @@ #endif /* !__KERNEL__ */ @@ -184,14 +84,90 @@ /* XXX: same as if_dqinfo struct in kernel */ struct obd_dqinfo { __u64 dqi_bgrace; -Index: lustre/llite/dir.c -=================================================================== -RCS file: /cvsroot/cfs/lustre-core/llite/dir.c,v -retrieving revision 1.91.6.13 -diff -p -u -r1.91.6.13 dir.c ---- ./lustre/llite/dir.c 27 Nov 2007 11:36:17 -0000 1.91.6.13 -+++ ./lustre/llite/dir.c 19 Dec 2007 20:24:35 -0000 -@@ -967,6 +967,7 @@ static int ll_dir_ioctl(struct inode *in +diff -urNad lustre-1.6.4.3~/lustre/include/lustre_quota.h lustre-1.6.4.3/lustre/include/lustre_quota.h +--- lustre-1.6.4.3~/lustre/include/lustre_quota.h 2008-05-09 11:40:16.000000000 +0200 ++++ lustre-1.6.4.3/lustre/include/lustre_quota.h 2008-05-09 11:40:37.000000000 +0200 +@@ -42,12 +42,24 @@ + struct lustre_quota_info { + struct file *qi_files[MAXQUOTAS]; + struct lustre_mem_dqinfo qi_info[MAXQUOTAS]; ++ lustre_quota_version_t qi_version; + }; + + #define DQ_STATUS_AVAIL 0x0 /* Available dquot */ + #define DQ_STATUS_SET 0x01 /* Sombody is setting dquot */ + #define DQ_STATUS_RECOVERY 0x02 /* dquot is in recovery */ + ++struct lustre_mem_dqblk { ++ __u64 dqb_bhardlimit; /* absolute limit on disk blks alloc */ ++ __u64 dqb_bsoftlimit; /* preferred limit on disk blks */ ++ __u64 dqb_curspace; /* current used space */ ++ __u64 dqb_ihardlimit; /* absolute limit on allocated inodes */ ++ __u64 dqb_isoftlimit; /* preferred inode limit */ ++ __u64 dqb_curinodes; /* current # allocated inodes */ ++ time_t dqb_btime; /* time limit for excessive disk use */ ++ time_t dqb_itime; /* time limit for excessive inode use */ ++}; ++ + struct lustre_dquot { + /* Hash list in memory, protect by dquot_hash_lock */ + struct list_head dq_hash; +@@ -63,7 +75,7 @@ + int dq_type; /* Type fo quota (USRQUOTA, GRPQUOUTA) */ + unsigned short dq_status; /* See DQ_STATUS_ */ + unsigned long dq_flags; /* See DQ_ in quota.h */ +- struct mem_dqblk dq_dqb; /* Diskquota usage */ ++ struct lustre_mem_dqblk dq_dqb; /* Diskquota usage */ + }; + + struct dquot_id { +@@ -77,6 +89,7 @@ + #define QFILE_INIT_INFO 4 + #define QFILE_RD_DQUOT 5 + #define QFILE_WR_DQUOT 6 ++#define QFILE_CONVERT 7 + + /* admin quotafile operations */ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0) +@@ -88,6 +101,7 @@ + int lustre_init_quota_info(struct lustre_quota_info *lqi, int type); + int lustre_get_qids(struct file *file, struct inode *inode, int type, + struct list_head *list); ++int lustre_quota_convert(struct lustre_quota_info *lqi, int type); + #else + + #ifndef DQ_FAKE_B +@@ -122,6 +136,11 @@ + { + return 0; + } ++static inline int lustre_quota_convert(struct lustre_quota_info *lqi, ++ int type) ++{ ++ return 0; ++} + #endif /* KERNEL_VERSION(2,5,0) */ + + #define LL_DQUOT_OFF(sb) DQUOT_OFF(sb) +@@ -461,4 +480,14 @@ + extern quota_interface_t lov_quota_interface; + #endif + ++#define LUSTRE_ADMIN_QUOTAFILES_V1 {\ ++ "admin_quotafile.usr", /* user admin quotafile */\ ++ "admin_quotafile.grp" /* group admin quotafile */\ ++} ++ ++#define LUSTRE_ADMIN_QUOTAFILES_V2 {\ ++ "admin_quotafile_v2.usr", /* user admin quotafile */\ ++ "admin_quotafile_v2.grp" /* group admin quotafile */\ ++} ++ + #endif /* _LUSTRE_QUOTA_H */ +diff -urNad lustre-1.6.4.3~/lustre/llite/dir.c lustre-1.6.4.3/lustre/llite/dir.c +--- lustre-1.6.4.3~/lustre/llite/dir.c 2008-05-09 11:40:16.000000000 +0200 ++++ lustre-1.6.4.3/lustre/llite/dir.c 2008-05-09 11:40:37.000000000 +0200 +@@ -967,6 +967,7 @@ type = qctl->qc_type; id = qctl->qc_id; switch (cmd) { @@ -199,14 +175,10 @@ case Q_QUOTAON: case Q_QUOTAOFF: case Q_SETQUOTA: -Index: lustre/lvfs/Makefile.in -=================================================================== -RCS file: /cvsroot/cfs/lustre-core/lvfs/Makefile.in,v -retrieving revision 1.12.16.2 -diff -p -u -r1.12.16.2 Makefile.in ---- ./lustre/lvfs/Makefile.in 26 Jul 2007 06:24:10 -0000 1.12.16.2 -+++ ./lustre/lvfs/Makefile.in 19 Dec 2007 20:24:35 -0000 -@@ -3,7 +3,7 @@ MODULES := lvfs +diff -urNad lustre-1.6.4.3~/lustre/lvfs/Makefile.in lustre-1.6.4.3/lustre/lvfs/Makefile.in +--- lustre-1.6.4.3~/lustre/lvfs/Makefile.in 2008-05-09 11:40:16.000000000 +0200 ++++ lustre-1.6.4.3/lustre/lvfs/Makefile.in 2008-05-09 11:40:37.000000000 +0200 +@@ -3,7 +3,7 @@ @[EMAIL PROTECTED] += quotafmt_test lvfs-objs := lvfs_common.o lvfs_linux.o fsfilt.o upcall_cache.o prng.o lvfs_lib.o @@ -215,14 +187,10 @@ @[EMAIL PROTECTED] := quotafmt_test.o -Index: lustre/lvfs/autoMakefile.am -=================================================================== -RCS file: /cvsroot/cfs/lustre-core/lvfs/autoMakefile.am,v -retrieving revision 1.14.16.3 -diff -p -u -r1.14.16.3 autoMakefile.am ---- ./lustre/lvfs/autoMakefile.am 26 Jul 2007 06:46:08 -0000 1.14.16.3 -+++ ./lustre/lvfs/autoMakefile.am 19 Dec 2007 20:24:35 -0000 -@@ -76,6 +76,7 @@ DIST_SOURCES = fsfilt.c fsfilt_ext3.c fs +diff -urNad lustre-1.6.4.3~/lustre/lvfs/autoMakefile.am lustre-1.6.4.3/lustre/lvfs/autoMakefile.am +--- lustre-1.6.4.3~/lustre/lvfs/autoMakefile.am 2008-05-09 11:40:36.000000000 +0200 ++++ lustre-1.6.4.3/lustre/lvfs/autoMakefile.am 2008-05-09 11:40:37.000000000 +0200 +@@ -76,6 +76,7 @@ lvfs_internal.h lvfs_linux.c lvfs_userfs.c \ upcall_cache.c prng.c lvfs_lib.c\ lustre_quota_fmt.c lustre_quota_fmt.h quotafmt_test.c \ @@ -230,14 +198,10 @@ # quotacheck_test.c quotactl_test.c fsfilt_ext3_quota.h MOSTLYCLEANFILES := @MOSTLYCLEANFILES@ -Index: lustre/lvfs/fsfilt_ext3.c -=================================================================== -RCS file: /cvsroot/cfs/lustre-core/lvfs/fsfilt_ext3.c,v -retrieving revision 1.58.28.19 -diff -p -u -r1.58.28.19 fsfilt_ext3.c ---- ./lustre/lvfs/fsfilt_ext3.c 27 Nov 2007 11:36:18 -0000 1.58.28.19 -+++ ./lustre/lvfs/fsfilt_ext3.c 19 Dec 2007 20:24:36 -0000 -@@ -2063,6 +2063,9 @@ static int fsfilt_ext3_quotainfo(struct +diff -urNad lustre-1.6.4.3~/lustre/lvfs/fsfilt_ext3.c lustre-1.6.4.3/lustre/lvfs/fsfilt_ext3.c +--- lustre-1.6.4.3~/lustre/lvfs/fsfilt_ext3.c 2008-05-09 11:40:16.000000000 +0200 ++++ lustre-1.6.4.3/lustre/lvfs/fsfilt_ext3.c 2008-05-09 11:40:37.000000000 +0200 +@@ -2061,6 +2061,9 @@ case QFILE_INIT_INFO: rc = lustre_init_quota_info(lqi, type); break; @@ -247,13 +211,9 @@ default: CERROR("Unsupported admin quota file cmd %d\n", cmd); LBUG(); -Index: lustre/lvfs/lustre_quota_fmt.c -=================================================================== -RCS file: /cvsroot/cfs/lustre-core/lvfs/lustre_quota_fmt.c,v -retrieving revision 1.2 -diff -p -u -r1.2 lustre_quota_fmt.c ---- ./lustre/lvfs/lustre_quota_fmt.c 31 Mar 2007 00:16:22 -0000 1.2 -+++ ./lustre/lvfs/lustre_quota_fmt.c 19 Dec 2007 20:24:37 -0000 +diff -urNad lustre-1.6.4.3~/lustre/lvfs/lustre_quota_fmt.c lustre-1.6.4.3/lustre/lvfs/lustre_quota_fmt.c +--- lustre-1.6.4.3~/lustre/lvfs/lustre_quota_fmt.c 2008-05-09 11:40:37.000000000 +0200 ++++ lustre-1.6.4.3/lustre/lvfs/lustre_quota_fmt.c 2008-05-09 11:43:31.000000000 +0200 @@ -24,21 +24,33 @@ #include <asm/uaccess.h> @@ -266,20 +226,20 @@ + [LUSTRE_QUOTA_V1] = LUSTRE_INITQVERSIONS, + [LUSTRE_QUOTA_V2] = LUSTRE_INITQVERSIONS_V2 +}; -+ + +-#define GETIDINDEX(id, depth) (((id) >> ((LUSTRE_DQTREEDEPTH-(depth)-1)*8)) & 0xff) +-#define GETENTRIES(buf) ((struct lustre_disk_dqblk *)(((char *)buf)+sizeof(struct lustre_disk_dqdbheader))) +static const int lustre_dqstrinblk[] = { + [LUSTRE_QUOTA_V1] = LUSTRE_DQSTRINBLK, + [LUSTRE_QUOTA_V2] = LUSTRE_DQSTRINBLK_V2 +}; --#define GETIDINDEX(id, depth) (((id) >> ((LUSTRE_DQTREEDEPTH-(depth)-1)*8)) & 0xff) --#define GETENTRIES(buf) ((struct lustre_disk_dqblk *)(((char *)buf)+sizeof(struct lustre_disk_dqdbheader))) +-static int check_quota_file(struct file *f, struct inode *inode, int type) +static const int lustre_disk_dqblk_sz[] = { + [LUSTRE_QUOTA_V1] = sizeof(struct lustre_disk_dqblk), + [LUSTRE_QUOTA_V2] = sizeof(struct lustre_disk_dqblk_v2) +}; - --static int check_quota_file(struct file *f, struct inode *inode, int type) ++ +int check_quota_file(struct file *f, struct inode *inode, int type, + lustre_quota_version_t version) { @@ -293,7 +253,7 @@ if (f) { fs = get_fs(); -@@ -57,27 +69,24 @@ static int check_quota_file(struct file +@@ -57,18 +69,18 @@ #endif } if (size != sizeof(struct lustre_disk_dqheader)) @@ -304,7 +264,7 @@ - return 0; - return 1; + return -EINVAL; -+ return 0; ++ return 0 ; } /* Check whether given file is really lustre admin quotafile */ @@ -315,18 +275,8 @@ + return check_quota_file(f, NULL, type, lqi->qi_version); } --/* Read information header from quota file */ --int lustre_read_quota_info(struct lustre_quota_info *lqi, int type) -+int lustre_read_quota_file_info(struct file* f, struct lustre_mem_dqinfo* info) - { - mm_segment_t fs; - struct lustre_disk_dqinfo dinfo; -- struct lustre_mem_dqinfo *info = &lqi->qi_info[type]; -- struct file *f = lqi->qi_files[type]; - ssize_t size; - loff_t offset = LUSTRE_DQINFOOFF; - -@@ -87,9 +96,9 @@ int lustre_read_quota_info(struct lustre + int lustre_read_quota_file_info(struct file* f, struct lustre_mem_dqinfo* info) +@@ -84,9 +96,9 @@ sizeof(struct lustre_disk_dqinfo), &offset); set_fs(fs); if (size != sizeof(struct lustre_disk_dqinfo)) { @@ -338,8 +288,8 @@ } info->dqi_bgrace = le32_to_cpu(dinfo.dqi_bgrace); info->dqi_igrace = le32_to_cpu(dinfo.dqi_igrace); -@@ -100,6 +109,12 @@ int lustre_read_quota_info(struct lustre - return 0; +@@ -103,6 +115,12 @@ + return lustre_read_quota_file_info(lqi->qi_files[type], &lqi->qi_info[type]); } +/* Read information header from quota file */ @@ -351,7 +301,7 @@ /* Write information header to quota file */ int lustre_write_quota_info(struct lustre_quota_info *lqi, int type) { -@@ -131,33 +146,65 @@ int lustre_write_quota_info(struct lustr +@@ -134,33 +152,65 @@ return 0; } @@ -372,7 +322,15 @@ + +void disk2memdqb(struct lustre_mem_dqblk *m, void *d, + lustre_quota_version_t version) -+{ + { +- m->dqb_ihardlimit = le32_to_cpu(d->dqb_ihardlimit); +- m->dqb_isoftlimit = le32_to_cpu(d->dqb_isoftlimit); +- m->dqb_curinodes = le32_to_cpu(d->dqb_curinodes); +- m->dqb_itime = le64_to_cpu(d->dqb_itime); +- m->dqb_bhardlimit = le32_to_cpu(d->dqb_bhardlimit); +- m->dqb_bsoftlimit = le32_to_cpu(d->dqb_bsoftlimit); +- m->dqb_curspace = le64_to_cpu(d->dqb_curspace); +- m->dqb_btime = le64_to_cpu(d->dqb_btime); + m->dqb_ihardlimit = DQF_GET(d, version, dqb_ihardlimit); + m->dqb_isoftlimit = DQF_GET(d, version, dqb_isoftlimit); + m->dqb_curinodes = DQF_GET(d, version, dqb_curinodes); @@ -381,24 +339,13 @@ + m->dqb_bsoftlimit = DQF_GET(d, version, dqb_bsoftlimit); + m->dqb_curspace = DQF_GET(d, version, dqb_curspace); + m->dqb_btime = DQF_GET(d, version, dqb_btime); -+} -+ + } + +-static void mem2diskdqb(struct lustre_disk_dqblk *d, struct mem_dqblk *m, +- qid_t id) +static int check_quota_bounds(struct lustre_mem_dqblk *m, + lustre_quota_version_t version) { -- m->dqb_ihardlimit = le32_to_cpu(d->dqb_ihardlimit); -- m->dqb_isoftlimit = le32_to_cpu(d->dqb_isoftlimit); -- m->dqb_curinodes = le32_to_cpu(d->dqb_curinodes); -- m->dqb_itime = le64_to_cpu(d->dqb_itime); -- m->dqb_bhardlimit = le32_to_cpu(d->dqb_bhardlimit); -- m->dqb_bsoftlimit = le32_to_cpu(d->dqb_bsoftlimit); -- m->dqb_curspace = le64_to_cpu(d->dqb_curspace); -- m->dqb_btime = le64_to_cpu(d->dqb_btime); --} -- --static void mem2diskdqb(struct lustre_disk_dqblk *d, struct mem_dqblk *m, -- qid_t id) --{ - d->dqb_ihardlimit = cpu_to_le32(m->dqb_ihardlimit); - d->dqb_isoftlimit = cpu_to_le32(m->dqb_isoftlimit); - d->dqb_curinodes = cpu_to_le32(m->dqb_curinodes); @@ -415,8 +362,9 @@ + m->dqb_bhardlimit <= MAX_UL && + m->dqb_bsoftlimit <= MAX_UL) || + version != LUSTRE_QUOTA_V1; -+} -+ + } + +-static dqbuf_t getdqbuf(void) +static int mem2diskdqb(void *d, struct lustre_mem_dqblk *m, + qid_t id, lustre_quota_version_t version) +{ @@ -434,14 +382,13 @@ + DQF_PUT(d, version, dqb_id, id); + + return 0; - } - --static dqbuf_t getdqbuf(void) ++} ++ +dqbuf_t getdqbuf(void) { dqbuf_t buf = kmalloc(LUSTRE_DQBLKSIZE, GFP_NOFS); if (!buf) -@@ -166,12 +213,12 @@ static dqbuf_t getdqbuf(void) +@@ -169,12 +219,12 @@ return buf; } @@ -456,7 +403,7 @@ { mm_segment_t fs; ssize_t ret; -@@ -185,7 +232,7 @@ static ssize_t read_blk(struct file *fil +@@ -188,7 +238,7 @@ return ret; } @@ -465,7 +412,7 @@ { mm_segment_t fs; ssize_t ret; -@@ -196,18 +243,15 @@ static ssize_t write_blk(struct file *fi +@@ -199,18 +249,15 @@ ret = filp->f_op->write(filp, (char *)buf, LUSTRE_DQBLKSIZE, &offset); set_fs(fs); return ret; @@ -486,7 +433,7 @@ { dqbuf_t buf = getdqbuf(); struct lustre_disk_dqdbheader *dh = -@@ -223,7 +267,8 @@ static int get_free_dqblk(struct file *f +@@ -226,7 +273,8 @@ info->dqi_free_blk = le32_to_cpu(dh->dqdh_next_free); } else { memset(buf, 0, LUSTRE_DQBLKSIZE); @@ -496,7 +443,7 @@ goto out_buf; blk = info->dqi_blocks++; } -@@ -235,8 +280,8 @@ out_buf: +@@ -238,8 +286,8 @@ } /* Insert empty block to the list */ @@ -507,7 +454,7 @@ { struct lustre_disk_dqdbheader *dh = (struct lustre_disk_dqdbheader *)buf; -@@ -254,9 +299,9 @@ static int put_free_dqblk(struct file *f +@@ -257,9 +305,9 @@ } /* Remove given block from the list of blocks with free entries */ @@ -520,7 +467,7 @@ { dqbuf_t tmpbuf = getdqbuf(); struct lustre_disk_dqdbheader *dh = -@@ -288,9 +333,10 @@ static int remove_free_dqentry(struct fi +@@ -291,9 +339,10 @@ } freedqbuf(tmpbuf); dh->dqdh_next_free = dh->dqdh_prev_free = cpu_to_le32(0); @@ -534,7 +481,7 @@ return 0; out_buf: freedqbuf(tmpbuf); -@@ -298,9 +344,9 @@ out_buf: +@@ -301,9 +350,9 @@ } /* Insert given block to the beginning of list with free entries */ @@ -547,7 +494,7 @@ { dqbuf_t tmpbuf = getdqbuf(); struct lustre_disk_dqdbheader *dh = -@@ -330,16 +376,21 @@ out_buf: +@@ -333,16 +382,21 @@ return err; } @@ -572,7 +519,7 @@ dqbuf_t buf; *err = 0; -@@ -348,7 +399,7 @@ static uint find_free_dqentry(struct lus +@@ -351,7 +405,7 @@ return 0; } dh = (struct lustre_disk_dqdbheader *)buf; @@ -581,7 +528,7 @@ if (info->dqi_free_entry) { blk = info->dqi_free_entry; if ((*err = read_blk(filp, blk, buf)) < 0) -@@ -361,39 +412,40 @@ static uint find_free_dqentry(struct lus +@@ -364,39 +418,40 @@ return 0; } memset(buf, 0, LUSTRE_DQBLKSIZE); @@ -637,7 +584,7 @@ freedqbuf(buf); return blk; out_buf: -@@ -402,7 +454,8 @@ out_buf: +@@ -405,7 +460,8 @@ } /* Insert reference to structure into the trie */ @@ -647,7 +594,7 @@ { struct lustre_quota_info *lqi = dquot->dq_info; struct file *filp = lqi->qi_files[dquot->dq_type]; -@@ -423,8 +476,7 @@ static int do_insert_tree(struct lustre_ +@@ -426,8 +482,7 @@ newact = 1; } else { if ((ret = read_blk(filp, *treeblk, buf)) < 0) { @@ -657,7 +604,7 @@ *treeblk); goto out_buf; } -@@ -436,16 +488,16 @@ static int do_insert_tree(struct lustre_ +@@ -439,16 +494,16 @@ if (depth == LUSTRE_DQTREEDEPTH - 1) { if (newblk) { @@ -678,7 +625,7 @@ if (newson && ret >= 0) { ref[GETIDINDEX(dquot->dq_id, depth)] = cpu_to_le32(newblk); ret = write_blk(filp, *treeblk, buf); -@@ -457,46 +509,51 @@ out_buf: +@@ -460,46 +515,51 @@ } /* Wrapper for inserting quota structure into tree */ @@ -745,7 +692,7 @@ printk(KERN_WARNING "VFS: dquota write failed on dev %s\n", filp->f_dentry->d_sb->s_id); if (ret >= 0) -@@ -508,25 +565,27 @@ static int lustre_write_dquot(struct lus +@@ -511,25 +571,27 @@ } /* Free dquot entry in data block */ @@ -778,7 +725,7 @@ goto out_buf; } dh = (struct lustre_disk_dqdbheader *)buf; -@@ -534,27 +593,23 @@ static int free_dqentry(struct lustre_dq +@@ -537,27 +599,23 @@ if (!le16_to_cpu(dh->dqdh_entries)) { /* Block got free? */ if ((ret = remove_free_dqentry(filp, info, buf, blk)) < 0 || (ret = put_free_dqblk(filp, info, buf, blk)) < 0) { @@ -814,7 +761,7 @@ goto out_buf; } } -@@ -565,7 +620,8 @@ out_buf: +@@ -568,7 +626,8 @@ } /* Remove reference to dquot from tree */ @@ -824,7 +771,7 @@ { struct file *filp = dquot->dq_info->qi_files[dquot->dq_type]; struct lustre_mem_dqinfo *info = -@@ -578,26 +634,26 @@ static int remove_tree(struct lustre_dqu +@@ -581,26 +640,26 @@ if (!buf) return -ENOMEM; if ((ret = read_blk(filp, *blk, buf)) < 0) { @@ -857,7 +804,7 @@ } out_buf: freedqbuf(buf); -@@ -605,47 +661,50 @@ out_buf: +@@ -608,47 +667,50 @@ } /* Delete dquot from tree */ @@ -925,7 +872,7 @@ dquot->dq_id); ret = -EIO; goto out_buf; -@@ -653,14 +712,15 @@ static loff_t find_block_dqentry(struct +@@ -656,14 +718,15 @@ ret = (blk << LUSTRE_DQBLKSIZE_BITS) + sizeof(struct lustre_disk_dqdbheader) + @@ -943,7 +890,7 @@ { struct file *filp = dquot->dq_info->qi_files[dquot->dq_type]; dqbuf_t buf = getdqbuf(); -@@ -670,7 +730,7 @@ static loff_t find_tree_dqentry(struct l +@@ -673,7 +736,7 @@ if (!buf) return -ENOMEM; if ((ret = read_blk(filp, blk, buf)) < 0) { @@ -952,7 +899,7 @@ goto out_buf; } ret = 0; -@@ -678,18 +738,19 @@ static loff_t find_tree_dqentry(struct l +@@ -681,18 +744,19 @@ if (!blk) /* No reference? */ goto out_buf; if (depth < LUSTRE_DQTREEDEPTH - 1) @@ -976,7 +923,7 @@ } int lustre_read_dquot(struct lustre_dquot *dquot) -@@ -698,50 +759,50 @@ int lustre_read_dquot(struct lustre_dquo +@@ -701,50 +765,50 @@ struct file *filp; mm_segment_t fs; loff_t offset; @@ -1048,7 +995,7 @@ } return ret; -@@ -751,6 +812,8 @@ int lustre_read_dquot(struct lustre_dquo +@@ -754,6 +818,8 @@ int lustre_commit_dquot(struct lustre_dquot *dquot) { int rc = 0; @@ -1057,7 +1004,7 @@ /* always clear the flag so we don't loop on an IO error... */ clear_bit(DQ_MOD_B, &dquot->dq_flags); -@@ -758,9 +821,9 @@ int lustre_commit_dquot(struct lustre_dq +@@ -761,9 +827,9 @@ * over all cluster, so keep the fake dquot entry on disk is * meaningless, just remove it */ if (test_bit(DQ_FAKE_B, &dquot->dq_flags)) @@ -1069,7 +1016,7 @@ if (rc < 0) return rc; -@@ -771,29 +834,41 @@ int lustre_commit_dquot(struct lustre_dq +@@ -774,29 +840,41 @@ return rc; } @@ -1120,7 +1067,7 @@ if (rc) return rc; -@@ -806,13 +881,13 @@ int lustre_init_quota_info(struct lustre +@@ -809,13 +887,13 @@ return lustre_write_quota_info(lqi, type); } @@ -1140,7 +1087,7 @@ { if (file) { return read_blk(file, blk, buf); -@@ -843,7 +918,7 @@ static int walk_block_dqentry(struct fil +@@ -846,7 +924,7 @@ if (!buf) return -ENOMEM; if ((ret = quota_read(filp, inode, type, blk, buf)) < 0) { @@ -1149,7 +1096,7 @@ goto out_buf; } ret = 0; -@@ -880,8 +955,8 @@ out_buf: +@@ -883,8 +961,8 @@ return ret; } @@ -1160,7 +1107,7 @@ { dqbuf_t buf = getdqbuf(); loff_t ret = 0; -@@ -891,7 +966,7 @@ static int walk_tree_dqentry(struct file +@@ -894,7 +972,7 @@ if (!buf) return -ENOMEM; if ((ret = quota_read(filp, inode, type, blk, buf)) < 0) { @@ -1169,7 +1116,7 @@ goto out_buf; } ret = 0; -@@ -902,7 +977,7 @@ static int walk_tree_dqentry(struct file +@@ -905,7 +983,7 @@ continue; if (depth < LUSTRE_DQTREEDEPTH - 1) @@ -1178,7 +1125,7 @@ depth + 1, list); else ret = walk_block_dqentry(filp, inode, type, blk, list); -@@ -919,61 +994,65 @@ int lustre_get_qids(struct file *fp, str +@@ -922,61 +1000,65 @@ struct list_head blk_list; struct dqblk *blk_item, *tmp; dqbuf_t buf = NULL; @@ -1271,7 +1218,7 @@ INIT_LIST_HEAD(&dqid->di_link); list_add(&dqid->di_link, list); } -@@ -986,12 +1065,14 @@ out_free: +@@ -989,12 +1071,14 @@ } if (buf) freedqbuf(buf); @@ -1288,13 +1235,9 @@ EXPORT_SYMBOL(lustre_read_dquot); EXPORT_SYMBOL(lustre_commit_dquot); EXPORT_SYMBOL(lustre_init_quota_info); -Index: lustre/lvfs/lustre_quota_fmt.h -=================================================================== -RCS file: /cvsroot/cfs/lustre-core/lvfs/lustre_quota_fmt.h,v -retrieving revision 1.2 -diff -p -u -r1.2 lustre_quota_fmt.h ---- ./lustre/lvfs/lustre_quota_fmt.h 31 Mar 2007 00:16:22 -0000 1.2 -+++ ./lustre/lvfs/lustre_quota_fmt.h 19 Dec 2007 20:24:37 -0000 +diff -urNad lustre-1.6.4.3~/lustre/lvfs/lustre_quota_fmt.h lustre-1.6.4.3/lustre/lvfs/lustre_quota_fmt.h +--- lustre-1.6.4.3~/lustre/lvfs/lustre_quota_fmt.h 2008-05-09 11:40:16.000000000 +0200 ++++ lustre-1.6.4.3/lustre/lvfs/lustre_quota_fmt.h 2008-05-09 11:40:37.000000000 +0200 @@ -17,19 +17,26 @@ * Same with quota v2's magic */ @@ -1303,14 +1246,14 @@ - 0xd9c01927 /* GRPQUOTA */\ + 0xd9c01f11, /* USRQUOTA */\ + 0xd9c01927 /* GRPQUOTA */\ - } - ++} ++ +/* Invalid magics that mark quota file as inconsistent */ +#define LUSTRE_BADQMAGICS {\ + 0xbadbadba, /* USRQUOTA */\ + 0xbadbadba /* GRPQUOTA */\ -+} -+ + } + +/* for the verson 1 of lustre_disk_dqblk*/ #define LUSTRE_INITQVERSIONS {\ - 0, /* USRQUOTA */\ @@ -1327,7 +1270,7 @@ */ struct lustre_disk_dqblk { __u32 dqb_id; /* id this quota applies to */ -@@ -43,6 +50,45 @@ struct lustre_disk_dqblk { +@@ -43,6 +50,45 @@ __u64 dqb_itime; /* time limit for excessive inode use */ }; @@ -1373,7 +1316,7 @@ /* * Here are header structures as written on disk and their in-memory copies */ -@@ -79,6 +125,59 @@ struct lustre_disk_dqdbheader { +@@ -79,6 +125,59 @@ #define LUSTRE_DQBLKSIZE (1 << LUSTRE_DQBLKSIZE_BITS) /* Size of block with quota structures */ #define LUSTRE_DQTREEOFF 1 /* Offset of tree in file in blocks */ #define LUSTRE_DQTREEDEPTH 4 /* Depth of quota tree */ @@ -1434,12 +1377,9 @@ +int lustre_quota_convert(struct lustre_quota_info *lqi, int type); #endif /* lustre_quota_fmt.h */ -Index: lustre/lvfs/lustre_quota_fmt_convert.c -=================================================================== -RCS file: lustre/lvfs/lustre_quota_fmt_convert.c -diff -N lustre/lvfs/lustre_quota_fmt_convert.c ---- /dev/null 1 Jan 1970 00:00:00 -0000 -+++ ./lustre/lvfs/lustre_quota_fmt_convert.c 19 Dec 2007 20:24:38 -0000 +diff -urNad lustre-1.6.4.3~/lustre/lvfs/lustre_quota_fmt_convert.c lustre-1.6.4.3/lustre/lvfs/lustre_quota_fmt_convert.c +--- lustre-1.6.4.3~/lustre/lvfs/lustre_quota_fmt_convert.c 1970-01-01 00:00:00.000000000 +0000 ++++ lustre-1.6.4.3/lustre/lvfs/lustre_quota_fmt_convert.c 2008-05-09 11:40:37.000000000 +0200 @@ -0,0 +1,185 @@ +/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- + * vim:expandtab:shiftwidth=8:tabstop=8: @@ -1626,14 +1566,10 @@ +} + +EXPORT_SYMBOL(lustre_quota_convert); -Index: lustre/lvfs/quotafmt_test.c -=================================================================== -RCS file: /cvsroot/cfs/lustre-core/lvfs/quotafmt_test.c,v -retrieving revision 1.2 -diff -p -u -r1.2 quotafmt_test.c ---- ./lustre/lvfs/quotafmt_test.c 31 Mar 2007 00:16:22 -0000 1.2 -+++ ./lustre/lvfs/quotafmt_test.c 19 Dec 2007 20:24:38 -0000 -@@ -70,7 +70,7 @@ static int quotfmt_initialize(struct lus +diff -urNad lustre-1.6.4.3~/lustre/lvfs/quotafmt_test.c lustre-1.6.4.3/lustre/lvfs/quotafmt_test.c +--- lustre-1.6.4.3~/lustre/lvfs/quotafmt_test.c 2008-05-09 11:40:16.000000000 +0200 ++++ lustre-1.6.4.3/lustre/lvfs/quotafmt_test.c 2008-05-09 11:40:37.000000000 +0200 +@@ -70,7 +70,7 @@ sizeof(struct lustre_disk_dqheader), &offset); if (size != sizeof(struct lustre_disk_dqheader)) { @@ -1642,7 +1578,7 @@ name, rc); rc = size; break; -@@ -129,7 +129,7 @@ static int quotfmt_test_1(struct lustre_ +@@ -129,7 +129,7 @@ ENTRY; for (i = 0; i < MAXQUOTAS; i++) { @@ -1651,7 +1587,7 @@ RETURN(-EINVAL); } RETURN(0); -@@ -220,7 +220,7 @@ static void put_rand_dquot(struct lustre +@@ -220,7 +220,7 @@ static int write_check_dquot(struct lustre_quota_info *lqi) { struct lustre_dquot *dquot; @@ -1660,14 +1596,10 @@ int rc = 0; ENTRY; -Index: lustre/quota/quota_ctl.c -=================================================================== -RCS file: /cvsroot/cfs/lustre-core/quota/quota_ctl.c,v -retrieving revision 1.2.34.2 -diff -p -u -r1.2.34.2 quota_ctl.c ---- ./lustre/quota/quota_ctl.c 27 Nov 2007 11:36:18 -0000 1.2.34.2 -+++ ./lustre/quota/quota_ctl.c 19 Dec 2007 20:24:38 -0000 -@@ -74,6 +74,9 @@ int mds_quota_ctl(struct obd_export *exp +diff -urNad lustre-1.6.4.3~/lustre/quota/quota_ctl.c lustre-1.6.4.3/lustre/quota/quota_ctl.c +--- lustre-1.6.4.3~/lustre/quota/quota_ctl.c 2008-05-09 11:40:16.000000000 +0200 ++++ lustre-1.6.4.3/lustre/quota/quota_ctl.c 2008-05-09 11:40:37.000000000 +0200 +@@ -74,6 +74,9 @@ case Q_GETOQUOTA: rc = mds_get_obd_quota(obd, oqctl); break; @@ -1677,14 +1609,10 @@ default: CERROR("%s: unsupported mds_quotactl command: %d\n", obd->obd_name, oqctl->qc_cmd); -Index: lustre/quota/quota_interface.c -=================================================================== -RCS file: /cvsroot/cfs/lustre-core/quota/quota_interface.c,v -retrieving revision 1.3.12.3 -diff -p -u -r1.3.12.3 quota_interface.c ---- ./lustre/quota/quota_interface.c 12 Jul 2007 08:36:47 -0000 1.3.12.3 -+++ ./lustre/quota/quota_interface.c 19 Dec 2007 20:24:39 -0000 -@@ -175,7 +175,7 @@ EXPORT_SYMBOL(lprocfs_wr_itune); +diff -urNad lustre-1.6.4.3~/lustre/quota/quota_interface.c lustre-1.6.4.3/lustre/quota/quota_interface.c +--- lustre-1.6.4.3~/lustre/quota/quota_interface.c 2008-05-09 11:40:16.000000000 +0200 ++++ lustre-1.6.4.3/lustre/quota/quota_interface.c 2008-05-09 11:40:37.000000000 +0200 +@@ -175,7 +175,7 @@ #define USER_QUOTA 1 #define GROUP_QUOTA 2 @@ -1693,7 +1621,7 @@ int lprocfs_rd_type(char *page, char **start, off_t off, int count, int *eof, void *data) { -@@ -192,7 +192,28 @@ int lprocfs_rd_type(char *page, char **s +@@ -192,7 +192,28 @@ if (type & GROUP_QUOTA) strcat(stype, "g"); } @@ -1723,7 +1651,7 @@ return snprintf(page, count, "%s\n", stype); } EXPORT_SYMBOL(lprocfs_rd_type); -@@ -255,17 +276,52 @@ int lprocfs_wr_type(struct file *file, c +@@ -255,17 +276,52 @@ struct obd_device *obd = (struct obd_device *)data; struct obd_device_target *obt = &obd->u.obt; int type = 0; @@ -1782,7 +1710,7 @@ obt->obt_qctxt.lqc_atype = type; if (type == 0) -@@ -496,6 +552,7 @@ static int mds_quota_setup(struct obd_de +@@ -496,6 +552,7 @@ int rc; ENTRY; @@ -1790,13 +1718,9 @@ atomic_set(&obt->obt_quotachecking, 1); /* initialize quota master and quota context */ sema_init(&mds->mds_qonoff_sem, 1); -Index: lustre/quota/quota_internal.h -=================================================================== -RCS file: /cvsroot/cfs/lustre-core/quota/quota_internal.h,v -retrieving revision 1.3.12.1 -diff -p -u -r1.3.12.1 quota_internal.h ---- ./lustre/quota/quota_internal.h 5 Sep 2007 09:50:17 -0000 1.3.12.1 -+++ ./lustre/quota/quota_internal.h 19 Dec 2007 20:24:39 -0000 +diff -urNad lustre-1.6.4.3~/lustre/quota/quota_internal.h lustre-1.6.4.3/lustre/quota/quota_internal.h +--- lustre-1.6.4.3~/lustre/quota/quota_internal.h 2008-05-09 11:40:16.000000000 +0200 ++++ lustre-1.6.4.3/lustre/quota/quota_internal.h 2008-05-09 11:40:37.000000000 +0200 @@ -27,8 +27,8 @@ #define DQUOT_DEBUG(dquot, fmt, arg...) \ @@ -1808,7 +1732,7 @@ dquot->dq_id, dquot->dq_type, dquot->dq_off, dquot->dq_flags, \ dquot->dq_dqb.dqb_bhardlimit, dquot->dq_dqb.dqb_curspace, \ dquot->dq_dqb.dqb_ihardlimit, dquot->dq_dqb.dqb_curinodes, \ -@@ -74,6 +74,10 @@ int mds_quota_adjust(struct obd_device * +@@ -74,6 +74,10 @@ int filter_quota_adjust(struct obd_device *obd, unsigned int qcids[], unsigned int qpids[], int rc, int opc); int init_admin_quotafiles(struct obd_device *obd, struct obd_quotactl *oqctl); @@ -1819,14 +1743,10 @@ int mds_admin_quota_on(struct obd_device *obd, struct obd_quotactl *oqctl); int mds_quota_on(struct obd_device *obd, struct obd_quotactl *oqctl); int mds_quota_off(struct obd_device *obd, struct obd_quotactl *oqctl); -Index: lustre/quota/quota_master.c -=================================================================== -RCS file: /cvsroot/cfs/lustre-core/quota/quota_master.c,v -retrieving revision 1.2.34.5 -diff -p -u -r1.2.34.5 quota_master.c ---- ./lustre/quota/quota_master.c 27 Nov 2007 11:36:18 -0000 1.2.34.5 -+++ ./lustre/quota/quota_master.c 19 Dec 2007 20:24:39 -0000 -@@ -361,31 +361,122 @@ int filter_quota_adjust(struct obd_devic +diff -urNad lustre-1.6.4.3~/lustre/quota/quota_master.c lustre-1.6.4.3/lustre/quota/quota_master.c +--- lustre-1.6.4.3~/lustre/quota/quota_master.c 2008-05-09 11:40:37.000000000 +0200 ++++ lustre-1.6.4.3/lustre/quota/quota_master.c 2008-05-09 11:40:37.000000000 +0200 +@@ -361,31 +361,122 @@ RETURN(0); } @@ -1959,7 +1879,7 @@ if (!Q_TYPESET(oqctl, i)) continue; -@@ -397,33 +488,44 @@ int init_admin_quotafiles(struct obd_dev +@@ -397,33 +488,44 @@ continue; } @@ -2025,7 +1945,7 @@ rc = PTR_ERR(fp); CERROR("error creating admin quotafile %s (rc:%d)\n", name, rc); -@@ -431,15 +533,26 @@ int init_admin_quotafiles(struct obd_dev +@@ -431,15 +533,26 @@ } qinfo->qi_files[i] = fp; @@ -2042,13 +1962,13 @@ + if (rc) + CERROR("error init %s admin quotafile! (rc:%d)\n", + i == USRQUOTA ? "user" : "group", rc); - break; ++ break; + case LUSTRE_QUOTA_V2: + rc = fsfilt_quotainfo(obd, qinfo, i, QFILE_CONVERT); + if (rc) + CERROR("error convert %s admin quotafile! (rc:%d)\n", + i == USRQUOTA ? "user" : "group", rc); -+ break; + break; + default: + LBUG(); } @@ -2058,7 +1978,7 @@ } up(&mds->mds_qonoff_sem); -@@ -470,38 +583,61 @@ int mds_admin_quota_on(struct obd_device +@@ -470,38 +583,61 @@ { struct mds_obd *mds = &obd->u.mds; struct lustre_quota_info *qinfo = &mds->mds_quota_info; @@ -2130,7 +2050,7 @@ rc = fsfilt_quotainfo(obd, qinfo, i, QFILE_RD_INFO); if (rc) { CERROR("error read quotainfo of %s! (rc:%d)\n", -@@ -748,7 +884,7 @@ int mds_set_dqblk(struct obd_device *obd +@@ -748,7 +884,7 @@ { struct mds_obd *mds = &obd->u.mds; struct lustre_quota_info *qinfo = &mds->mds_quota_info; @@ -2139,14 +2059,10 @@ time_t btime, itime; struct lustre_dquot *dquot; struct obd_dqblk *dqblk = &oqctl->qc_dqblk; -Index: lustre/tests/sanity-quota.sh -=================================================================== -RCS file: /cvsroot/cfs/lustre-core/tests/sanity-quota.sh,v -retrieving revision 1.7.10.20 -diff -p -u -r1.7.10.20 sanity-quota.sh ---- ./lustre/tests/sanity-quota.sh 12 Dec 2007 20:31:53 -0000 1.7.10.20 -+++ ./lustre/tests/sanity-quota.sh 19 Dec 2007 20:24:41 -0000 -@@ -1029,6 +1029,79 @@ test_14(){ # b=12223 -- setting quota on +diff -urNad lustre-1.6.4.3~/lustre/tests/sanity-quota.sh lustre-1.6.4.3/lustre/tests/sanity-quota.sh +--- lustre-1.6.4.3~/lustre/tests/sanity-quota.sh 2008-05-09 11:40:16.000000000 +0200 ++++ lustre-1.6.4.3/lustre/tests/sanity-quota.sh 2008-05-09 11:40:37.000000000 +0200 +@@ -1037,6 +1037,79 @@ } run_test 14 "test setting quota on root ===" @@ -2226,16 +2142,12 @@ # turn off quota test_99() { -Index: lustre/tests/test-framework.sh -=================================================================== -RCS file: /cvsroot/cfs/lustre-core/tests/test-framework.sh,v -retrieving revision 1.42.10.46 -diff -p -u -r1.42.10.46 test-framework.sh ---- ./lustre/tests/test-framework.sh 12 Dec 2007 21:08:16 -0000 1.42.10.46 -+++ ./lustre/tests/test-framework.sh 19 Dec 2007 20:24:43 -0000 -@@ -1246,3 +1246,15 @@ check_runas_id() { - add user $myRUNAS_ID:$myRUNAS_ID on these nodes." - rm -rf $DIR/d0_runas_test +diff -urNad lustre-1.6.4.3~/lustre/tests/test-framework.sh lustre-1.6.4.3/lustre/tests/test-framework.sh +--- lustre-1.6.4.3~/lustre/tests/test-framework.sh 2008-05-09 11:40:16.000000000 +0200 ++++ lustre-1.6.4.3/lustre/tests/test-framework.sh 2008-05-09 11:40:37.000000000 +0200 +@@ -1175,3 +1175,15 @@ + { + grep -q patchless $LPROC/version } + +check_runas_id_ret() { @@ -2249,14 +2161,10 @@ + rm -rf $DIR/d0_runas_test + return 0 +} -Index: lustre/utils/lfs.c -=================================================================== -RCS file: /cvsroot/cfs/lustre-core/utils/lfs.c,v -retrieving revision 1.21.18.13 -diff -p -u -r1.21.18.13 lfs.c ---- ./lustre/utils/lfs.c 29 Nov 2007 01:45:59 -0000 1.21.18.13 -+++ ./lustre/utils/lfs.c 19 Dec 2007 20:24:46 -0000 -@@ -66,6 +66,7 @@ static int lfs_quotaon(int argc, char ** +diff -urNad lustre-1.6.4.3~/lustre/utils/lfs.c lustre-1.6.4.3/lustre/utils/lfs.c +--- lustre-1.6.4.3~/lustre/utils/lfs.c 2008-05-09 11:40:16.000000000 +0200 ++++ lustre-1.6.4.3/lustre/utils/lfs.c 2008-05-09 11:40:38.000000000 +0200 +@@ -66,6 +66,7 @@ static int lfs_quotaoff(int argc, char **argv); static int lfs_setquota(int argc, char **argv); static int lfs_quota(int argc, char **argv); @@ -2264,7 +2172,7 @@ #endif static int lfs_join(int argc, char **argv); -@@ -135,6 +136,8 @@ command_t cmdlist[] = { +@@ -135,6 +136,8 @@ " setquota -t [ -u | -g ] <block-grace> <inode-grace> <filesystem>"}, {"quota", lfs_quota, 0, "Display disk usage and limits.\n" "usage: quota [ -o obd_uuid ] [{-u|-g <name>}|-t] <filesystem>"}, @@ -2273,7 +2181,7 @@ #endif {"help", Parser_help, 0, "help"}, {"exit", Parser_quit, 0, "quit"}, -@@ -1257,6 +1260,52 @@ static int lfs_quotaoff(int argc, char * +@@ -1253,6 +1256,52 @@ return 0; } @@ -2326,9 +2234,9 @@ static int name2id(unsigned int *id, char *name, int type) { if (type == USRQUOTA) { -@@ -1380,6 +1429,17 @@ error: - return ULONG_MAX; - } +@@ -1317,6 +1366,17 @@ + } \ + } while (0) +#define ARG2ULL(nr, str, msg) \ +do { \ @@ -2344,7 +2252,7 @@ int lfs_setquota(int argc, char **argv) { int c; -@@ -1432,10 +1492,10 @@ int lfs_setquota(int argc, char **argv) +@@ -1369,10 +1429,10 @@ return CMD_HELP; } Added: trunk/debian/patches/bug13904-fix3.dpatch URL: http://svn.debian.org/wsvn/pkg-lustre/trunk/debian/patches/bug13904-fix3.dpatch?rev=472&op=file ============================================================================== --- trunk/debian/patches/bug13904-fix3.dpatch (added) +++ trunk/debian/patches/bug13904-fix3.dpatch Fri May 9 10:01:16 2008 @@ -1,0 +1,27 @@ +#! /bin/sh /usr/share/dpatch/dpatch-run +## +## All lines beginning with `## DP:' are a description of the patch. +## DP: Missing include of sys/quota.h + [EMAIL PROTECTED]@ +diff -urNad lustre-1.6.4.3~/lustre/quota/quota_context.c lustre-1.6.4.3/lustre/quota/quota_context.c +--- lustre-1.6.4.3~/lustre/quota/quota_context.c 2008-05-09 11:44:15.000000000 +0200 ++++ lustre-1.6.4.3/lustre/quota/quota_context.c 2008-05-09 11:46:58.000000000 +0200 +@@ -413,7 +413,7 @@ + + /* update local operational quota file */ + if (rc == 0) { +- __u32 count = QUSG(qdata->qd_count, is_blk); ++ __u64 count = QUSG(qdata->qd_count, is_blk); + struct obd_quotactl *qctl; + __u64 *hardlimit; + +@@ -453,7 +453,7 @@ + ",type: %s.\n", obd->obd_name, count, *hardlimit, + qdata_type ? "grp": "usr"); + LASSERTF(count < *hardlimit, +- "count: %d, hardlimit: "LPU64".\n", ++ "count: "LPU64", hardlimit: "LPU64".\n", + count, *hardlimit); + *hardlimit -= count; + break; _______________________________________________ Pkg-lustre-svn-commit mailing list Pkg-lustre-svn-commit@lists.alioth.debian.org http://lists.alioth.debian.org/mailman/listinfo/pkg-lustre-svn-commit