+// 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
-
-
-
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
}
+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);
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);
fs/ext3/super.c
+fs/ext3/file.c
+fs/ext3/inode.c
include/linux/ext3_fs.h
include/linux/ext3_fs_sb.h
-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);
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);
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)
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);
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);
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);
}
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
*/
#define EXPORT_SYMTAB
-#define DEBUG_SUBSYSTEM S_RPC /* S_MGMT */
+#define DEBUG_SUBSYSTEM S_FILTER
#include <linux/module.h>
#include <linux/init.h>
#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);
}
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");
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;
}
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)
{
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;
+// 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
#!/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