From: eeb Date: Thu, 17 Jul 2003 13:04:56 +0000 (+0000) Subject: * merged current b_devel X-Git-Tag: v1_7_100~1^90~24 X-Git-Url: https://git.whamcloud.com/?a=commitdiff_plain;h=6359fb9861b071af173913cd2c04ae09070370bc;p=fs%2Flustre-release.git * merged current b_devel --- diff --git a/lnet/include/linux/portals_compat25.h b/lnet/include/linux/portals_compat25.h index e28fbac..661d1ee 100644 --- a/lnet/include/linux/portals_compat25.h +++ b/lnet/include/linux/portals_compat25.h @@ -1,13 +1,38 @@ +// XXX BUG 1511 -- remove this stanza and all callers when bug 1511 is resolved +#if SPINLOCK_DEBUG +# if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) || defined(CONFIG_RH_2_4_20) +# define SIGNAL_MASK_ASSERT() \ + LASSERT(current->sighand->siglock.magic == SPINLOCK_MAGIC) +# else +# define SIGNAL_MASK_ASSERT() \ + LASSERT(current->sigmask_lock.magic == SPINLOCK_MAGIC) +# endif +#else +# define SIGNAL_MASK_ASSERT() +#endif +// XXX BUG 1511 -- remove this stanza and all callers when bug 1511 is resolved + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) || defined(CONFIG_RH_2_4_20) -# define SIGNAL_MASK_LOCK(task, flags) \ +# define SIGNAL_MASK_LOCK(task, flags) \ spin_lock_irqsave(&task->sighand->siglock, flags) -# define SIGNAL_MASK_UNLOCK(task, flags) \ +# define SIGNAL_MASK_UNLOCK(task, flags) \ spin_unlock_irqrestore(&task->sighand->siglock, flags) # define RECALC_SIGPENDING recalc_sigpending() #else -# define SIGNAL_MASK_LOCK(task, flags) \ +# define SIGNAL_MASK_LOCK(task, flags) \ spin_lock_irqsave(&task->sigmask_lock, flags) -# define SIGNAL_MASK_UNLOCK(task, flags) \ +# define SIGNAL_MASK_UNLOCK(task, flags) \ spin_unlock_irqrestore(&task->sigmask_lock, flags) # define RECALC_SIGPENDING recalc_sigpending(current) #endif + +#if defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,20)) +# define THREAD_NAME(comm, fmt, a...) \ + sprintf(comm, fmt "|%d", ## a, current->thread.extern_pid) +#elif defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) +# define THREAD_NAME(comm, fmt, a...) \ + sprintf(comm, fmt "|%d", ## a, current->thread.mode.tt.extern_pid) +#else +# define THREAD_NAME(comm, fmt, a...) \ + sprintf(comm, fmt, ## a) +#endif diff --git a/lustre/kernel_patches/patches/dev_read_only_2.4.20-rh.patch b/lustre/kernel_patches/patches/dev_read_only_2.4.20-rh.patch index 55057d9..1b589b9 100644 --- a/lustre/kernel_patches/patches/dev_read_only_2.4.20-rh.patch +++ b/lustre/kernel_patches/patches/dev_read_only_2.4.20-rh.patch @@ -1,13 +1,10 @@ - - - drivers/block/blkpg.c | 35 +++++++++++++++++++++++++++++++++++ drivers/block/loop.c | 3 +++ - drivers/ide/ide-disk.c | 5 ++++- - 3 files changed, 42 insertions(+), 1 deletion(-) + drivers/ide/ide-disk.c | 5 +++++ + 3 files changed, 43 insertions(+) ---- rh-2.4.20/drivers/block/blkpg.c~dev_read_only_2.4.20 2003-04-11 14:05:03.000000000 +0800 -+++ rh-2.4.20-root/drivers/block/blkpg.c 2003-04-12 13:11:31.000000000 +0800 +--- kernel-2.4.20-6chaos_18_7/drivers/block/blkpg.c~dev_read_only_2.4.20-rh 2003-05-15 21:12:48.000000000 -0600 ++++ kernel-2.4.20-6chaos_18_7-braam/drivers/block/blkpg.c 2003-07-12 15:10:31.000000000 -0600 @@ -297,3 +297,38 @@ int blk_ioctl(kdev_t dev, unsigned int c } @@ -47,8 +44,8 @@ +EXPORT_SYMBOL(dev_set_rdonly); +EXPORT_SYMBOL(dev_check_rdonly); +EXPORT_SYMBOL(dev_clear_rdonly); ---- rh-2.4.20/drivers/block/loop.c~dev_read_only_2.4.20 2003-04-11 14:05:08.000000000 +0800 -+++ rh-2.4.20-root/drivers/block/loop.c 2003-04-12 13:11:31.000000000 +0800 +--- kernel-2.4.20-6chaos_18_7/drivers/block/loop.c~dev_read_only_2.4.20-rh 2003-05-15 21:12:50.000000000 -0600 ++++ kernel-2.4.20-6chaos_18_7-braam/drivers/block/loop.c 2003-07-12 15:10:31.000000000 -0600 @@ -491,6 +491,9 @@ static int loop_make_request(request_que spin_unlock_irq(&lo->lo_lock); @@ -59,17 +56,17 @@ if (lo->lo_flags & LO_FLAGS_READ_ONLY) goto err; } else if (rw == READA) { ---- rh-2.4.20/drivers/ide/ide-disk.c~dev_read_only_2.4.20 2003-04-11 14:04:53.000000000 +0800 -+++ rh-2.4.20-root/drivers/ide/ide-disk.c 2003-04-12 13:14:48.000000000 +0800 -@@ -381,7 +381,10 @@ static ide_startstop_t do_rw_disk (ide_d - if (IS_PDC4030_DRIVE) - return promise_rw_disk(drive, rq, block); - #endif /* CONFIG_BLK_DEV_PDC4030 */ -- -+ if (rq->cmd == WRITE && dev_check_rdonly(rq->rq_dev)) { -+ ide_end_request(1, HWGROUP(drive)); -+ return ide_stopped; -+ } +--- kernel-2.4.20-6chaos_18_7/drivers/ide/ide-disk.c~dev_read_only_2.4.20-rh 2003-05-15 21:13:09.000000000 -0600 ++++ kernel-2.4.20-6chaos_18_7-braam/drivers/ide/ide-disk.c 2003-07-12 15:12:03.000000000 -0600 +@@ -371,6 +371,11 @@ ide_startstop_t __ide_do_rw_disk (ide_dr + if (driver_blocked) + panic("Request while ide driver is blocked?"); + ++ if (rq->cmd == WRITE && dev_check_rdonly(rq->rq_dev)) { ++ ide_end_request(1, HWGROUP(drive)); ++ return ide_stopped; ++ } ++ if (IDE_CONTROL_REG) hwif->OUTB(drive->ctl, IDE_CONTROL_REG); diff --git a/lustre/kernel_patches/pc/ext3-delete_thread-2.4.18.pc b/lustre/kernel_patches/pc/ext3-delete_thread-2.4.18.pc index 5770132..1afa4d4 100644 --- a/lustre/kernel_patches/pc/ext3-delete_thread-2.4.18.pc +++ b/lustre/kernel_patches/pc/ext3-delete_thread-2.4.18.pc @@ -1,3 +1,5 @@ fs/ext3/super.c +fs/ext3/file.c +fs/ext3/inode.c include/linux/ext3_fs.h include/linux/ext3_fs_sb.h diff --git a/lustre/mdc/mdc_internal.h b/lustre/mdc/mdc_internal.h index e39a0aa..49d85ab2 100644 --- a/lustre/mdc/mdc_internal.h +++ b/lustre/mdc/mdc_internal.h @@ -1,24 +1,25 @@ -void mds_pack_req_body(struct ptlrpc_request *); -void mds_pack_rep_body(struct ptlrpc_request *); -void mds_readdir_pack(struct ptlrpc_request *req, __u64 offset, __u32 size, +void mdc_pack_req_body(struct ptlrpc_request *); +void mdc_pack_rep_body(struct ptlrpc_request *); +void mdc_readdir_pack(struct ptlrpc_request *req, __u64 offset, __u32 size, obd_id ino, int type); -void mds_getattr_pack(struct ptlrpc_request *req, int valid, int offset, +void mdc_getattr_pack(struct ptlrpc_request *req, int valid, int offset, int flags, struct mdc_op_data *data); -void mds_setattr_pack(struct ptlrpc_request *req, +void mdc_setattr_pack(struct ptlrpc_request *req, struct mdc_op_data *data, - struct iattr *iattr, void *ea, int ealen); -void mds_create_pack(struct ptlrpc_request *req, int offset, + struct iattr *iattr, void *ea, int ealen, + void *ea2, int ea2len); +void mdc_create_pack(struct ptlrpc_request *req, int offset, struct mdc_op_data *op_data, __u32 mode, __u64 rdev, __u32 uid, __u32 gid, __u64 time, const void *data, int datalen); -void mds_open_pack(struct ptlrpc_request *req, int offset, +void mdc_open_pack(struct ptlrpc_request *req, int offset, struct mdc_op_data *op_data, __u32 mode, __u64 rdev, __u32 uid, __u32 gid, __u64 time, __u32 flags, const void *data, int datalen); -void mds_unlink_pack(struct ptlrpc_request *req, int offset, +void mdc_unlink_pack(struct ptlrpc_request *req, int offset, struct mdc_op_data *data); -void mds_link_pack(struct ptlrpc_request *req, int offset, +void mdc_link_pack(struct ptlrpc_request *req, int offset, struct mdc_op_data *data); -void mds_rename_pack(struct ptlrpc_request *req, int offset, +void mdc_rename_pack(struct ptlrpc_request *req, int offset, struct mdc_op_data *data, const char *old, int oldlen, const char *new, int newlen); diff --git a/lustre/mds/mds_lib.c b/lustre/mds/mds_lib.c index 8f16795..93ac300 100644 --- a/lustre/mds/mds_lib.c +++ b/lustre/mds/mds_lib.c @@ -57,17 +57,15 @@ void mds_pack_inode2fid(struct ll_fid *fid, struct inode *inode) fid->f_type = (S_IFMT & inode->i_mode); } +/* Note that we can copy all of the fields, just some will not be "valid" */ void mds_pack_inode2body(struct mds_body *b, struct inode *inode) { - b->valid = OBD_MD_FLID | OBD_MD_FLATIME | OBD_MD_FLMTIME | - OBD_MD_FLCTIME | OBD_MD_FLSIZE | OBD_MD_FLBLOCKS | - OBD_MD_FLUID | OBD_MD_FLGID | OBD_MD_FLTYPE | OBD_MD_FLMODE | - OBD_MD_FLNLINK | OBD_MD_FLGENER; + b->valid = OBD_MD_FLID | OBD_MD_FLCTIME | OBD_MD_FLUID | OBD_MD_FLGID | + OBD_MD_FLTYPE | OBD_MD_FLMODE | OBD_MD_FLNLINK | OBD_MD_FLGENER; - /* The MDS file size isn't authoritative for regular files, so don't - * even pretend. */ - if (S_ISREG(inode->i_mode)) - b->valid &= ~(OBD_MD_FLSIZE | OBD_MD_FLBLOCKS); + if (!S_ISREG(inode->i_mode)) + b->valid |= OBD_MD_FLSIZE | OBD_MD_FLBLOCKS | OBD_MD_FLATIME | + OBD_MD_FLMTIME; b->ino = inode->i_ino; b->atime = LTIME_S(inode->i_atime); @@ -80,10 +78,12 @@ void mds_pack_inode2body(struct mds_body *b, struct inode *inode) b->gid = inode->i_gid; b->flags = inode->i_flags; b->rdev = b->rdev; - b->nlink = inode->i_nlink; + /* Return the correct link count for orphan inodes */ + b->nlink = mds_inode_is_orphan(inode) ? 0 : inode->i_nlink; b->generation = inode->i_generation; b->suppgid = -1; } + /* unpacking */ static int mds_setattr_unpack(struct ptlrpc_request *req, int offset, struct mds_update_record *r) @@ -92,8 +92,8 @@ static int mds_setattr_unpack(struct ptlrpc_request *req, int offset, struct mds_rec_setattr *rec; ENTRY; - rec = lustre_swab_reqbuf (req, offset, sizeof (*rec), - lustre_swab_mds_rec_setattr); + rec = lustre_swab_reqbuf(req, offset, sizeof(*rec), + lustre_swab_mds_rec_setattr); if (rec == NULL) RETURN (-EFAULT); @@ -120,9 +120,14 @@ static int mds_setattr_unpack(struct ptlrpc_request *req, int offset, if (r->ur_eadata == NULL) RETURN (-EFAULT); r->ur_eadatalen = req->rq_reqmsg->buflens[offset + 1]; - } else { - r->ur_eadata = NULL; - r->ur_eadatalen = 0; + } + + if (req->rq_reqmsg->bufcount > offset + 2) { + r->ur_logcookies = lustre_msg_buf(req->rq_reqmsg, offset + 2,0); + if (r->ur_eadata == NULL) + RETURN (-EFAULT); + + r->ur_cookielen = req->rq_reqmsg->buflens[offset + 2]; } RETURN(0); @@ -172,9 +177,6 @@ static int mds_create_unpack(struct ptlrpc_request *req, int offset, if (r->ur_tgt == NULL) RETURN (-EFAULT); r->ur_tgtlen = req->rq_reqmsg->buflens[offset + 2]; - } else { - r->ur_tgt = NULL; - r->ur_tgtlen = 0; } RETURN(0); } diff --git a/lustre/mgmt/Makefile.am b/lustre/mgmt/Makefile.am index a170791..f7307c8 100644 --- a/lustre/mgmt/Makefile.am +++ b/lustre/mgmt/Makefile.am @@ -5,7 +5,7 @@ DEFS= -modulefs_DATA = mgmt_svc.o -EXTRA_PROGRAMS = mgmt_svc +modulefs_DATA = mgmt_svc.o mgmt_cli.o +EXTRA_PROGRAMS = mgmt_svc mgmt_cli include $(top_srcdir)/Rules diff --git a/lustre/mgmt/mgmt_svc.c b/lustre/mgmt/mgmt_svc.c index fd59ba1..5b1046f 100644 --- a/lustre/mgmt/mgmt_svc.c +++ b/lustre/mgmt/mgmt_svc.c @@ -23,7 +23,7 @@ */ #define EXPORT_SYMTAB -#define DEBUG_SUBSYSTEM S_RPC /* S_MGMT */ +#define DEBUG_SUBSYSTEM S_FILTER #include #include @@ -33,25 +33,18 @@ #define MGMT_NEVENTS 1024UL #define MGMT_NBUFS 128UL #define MGMT_BUFSIZE 8192 -#define MGMT_MAXREQSIZE 128 +#define MGMT_MAXREQSIZE 512 #define MGMT_NUM_THREADS 4 #define MGMT_DEVICE_NAME "mgmt" static int mgmt_initialized; static struct ptlrpc_service *mgmt_service; -static int mgmt_connect(struct ptlrpc_request *req) -{ - int rc; - ENTRY; - - rc = -EINVAL; - - RETURN(rc); -} - static int mgmt_ping(struct ptlrpc_request *req) { + /* handle_incoming_request will have already updated the export's + * last_request_time, so we don't need to do anything else. + */ return lustre_pack_msg(0, NULL, NULL, &req->rq_replen, &req->rq_repmsg); } @@ -67,7 +60,11 @@ static int mgmt_handler(struct ptlrpc_request *req) break; case MGMT_CONNECT: DEBUG_REQ(D_RPCTRACE, req, "connect"); - rc = mgmt_connect(req); + rc = target_handle_connect(req, NULL /* no recovery handler */); + break; + case MGMT_DISCONNECT: + DEBUG_REQ(D_RPCTRACE, req, "disconnect"); + rc = target_handle_disconnect(req); break; default: DEBUG_REQ(D_RPCTRACE, req, "UNKNOWN OP"); @@ -114,7 +111,7 @@ static int mgmt_setup(struct obd_device *obd, obd_count len, void *buf) RETURN(0); } -static int mgmt_cleanup(struct obd_device *obd, int force, int failover) +static int mgmt_cleanup(struct obd_device *obd, int flags) { ENTRY; @@ -129,9 +126,11 @@ static int mgmt_cleanup(struct obd_device *obd, int force, int failover) } static struct obd_ops mgmt_obd_ops = { - o_owner: THIS_MODULE, - o_setup: mgmt_setup, - o_cleanup: mgmt_cleanup + o_owner: THIS_MODULE, + o_setup: mgmt_setup, + o_cleanup: mgmt_cleanup, + o_connect: class_connect, + o_disconnect: class_disconnect }; static int __init mgmt_init(void) diff --git a/lustre/osc/osc_lib.c b/lustre/osc/osc_lib.c index aa04a1a..c8cd6ad 100644 --- a/lustre/osc/osc_lib.c +++ b/lustre/osc/osc_lib.c @@ -34,8 +34,7 @@ static kdev_t path2dev(char *path) { struct dentry *dentry; struct nameidata nd; - kdev_t dev; - KDEVT_VAL(dev, 0); + kdev_t dev = KDEVT_INIT(0); if (!path_init(path, LOOKUP_FOLLOW, &nd)) return 0; diff --git a/lustre/portals/include/linux/portals_compat25.h b/lustre/portals/include/linux/portals_compat25.h index e28fbac..661d1ee 100644 --- a/lustre/portals/include/linux/portals_compat25.h +++ b/lustre/portals/include/linux/portals_compat25.h @@ -1,13 +1,38 @@ +// XXX BUG 1511 -- remove this stanza and all callers when bug 1511 is resolved +#if SPINLOCK_DEBUG +# if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) || defined(CONFIG_RH_2_4_20) +# define SIGNAL_MASK_ASSERT() \ + LASSERT(current->sighand->siglock.magic == SPINLOCK_MAGIC) +# else +# define SIGNAL_MASK_ASSERT() \ + LASSERT(current->sigmask_lock.magic == SPINLOCK_MAGIC) +# endif +#else +# define SIGNAL_MASK_ASSERT() +#endif +// XXX BUG 1511 -- remove this stanza and all callers when bug 1511 is resolved + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)) || defined(CONFIG_RH_2_4_20) -# define SIGNAL_MASK_LOCK(task, flags) \ +# define SIGNAL_MASK_LOCK(task, flags) \ spin_lock_irqsave(&task->sighand->siglock, flags) -# define SIGNAL_MASK_UNLOCK(task, flags) \ +# define SIGNAL_MASK_UNLOCK(task, flags) \ spin_unlock_irqrestore(&task->sighand->siglock, flags) # define RECALC_SIGPENDING recalc_sigpending() #else -# define SIGNAL_MASK_LOCK(task, flags) \ +# define SIGNAL_MASK_LOCK(task, flags) \ spin_lock_irqsave(&task->sigmask_lock, flags) -# define SIGNAL_MASK_UNLOCK(task, flags) \ +# define SIGNAL_MASK_UNLOCK(task, flags) \ spin_unlock_irqrestore(&task->sigmask_lock, flags) # define RECALC_SIGPENDING recalc_sigpending(current) #endif + +#if defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,4,20)) +# define THREAD_NAME(comm, fmt, a...) \ + sprintf(comm, fmt "|%d", ## a, current->thread.extern_pid) +#elif defined(__arch_um__) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) +# define THREAD_NAME(comm, fmt, a...) \ + sprintf(comm, fmt "|%d", ## a, current->thread.mode.tt.extern_pid) +#else +# define THREAD_NAME(comm, fmt, a...) \ + sprintf(comm, fmt, ## a) +#endif diff --git a/lustre/tests/runobdstat b/lustre/tests/runobdstat index 886ce8f2..ad60d6d 100644 --- a/lustre/tests/runobdstat +++ b/lustre/tests/runobdstat @@ -1,7 +1,7 @@ #!/bin/sh PATH=`dirname $0`/../utils:$PATH -obdstat filter 1 | while read LINE; do +llobdstat.pl $1 1 | while read LINE; do echo "`date +s`: $LINE" - [ "$1" ] && echo "`date +s`: $LINE" >> $1 + [ "$2" ] && echo "`date +s`: $LINE" >> $2 done