#define D_IOCTL (1 << 7) /* ioctl related information */
#define D_BLOCKS (1 << 8) /* ext2 block allocation */
#define D_NET (1 << 9) /* network communications */
-#define D_WARNING (1 << 10)
+#define D_WARNING (1 << 10) /* CWARN(...) == CDEBUG (D_WARNING, ...) */
#define D_BUFFS (1 << 11)
#define D_OTHER (1 << 12)
#define D_DENTRY (1 << 13)
+ struct dentry parent;
+ struct dentry dentry;
+
-+ if (len < EXT3_NAME_LEN)
++ if (len > EXT3_NAME_LEN)
+ return -ENAMETOOLONG;
+
+ parent.d_inode = dir;
ldlm_completion_callback, void *data);
ldlm_error_t ldlm_lock_enqueue(struct ldlm_namespace *, struct ldlm_lock **,
void *cookie, int cookie_len, int *flags);
+void ldlm_lock_addref_internal(struct ldlm_lock *, __u32 mode);
+void ldlm_lock_decref_internal(struct ldlm_lock *, __u32 mode);
+void ldlm_add_ast_work_item(struct ldlm_lock *lock, struct ldlm_lock *new,
+ void *data, int datalen);
+int ldlm_reprocess_queue(struct ldlm_resource *res, struct list_head *queue);
+
+typedef int (*ldlm_processing_policy)(struct ldlm_lock *lock, int *flags,
+ int first_enq, ldlm_error_t *err);
+
+/* ldlm_plain.c */
+int ldlm_process_plain_lock(struct ldlm_lock *lock, int *flags, int first_enq,
+ ldlm_error_t *err);
+
+/* ldlm_extent.c */
+int ldlm_process_extent_lock(struct ldlm_lock *lock, int *flags, int first_enq,
+ ldlm_error_t *err);
+
+/* ldlm_flock.c */
+int ldlm_process_flock_lock(struct ldlm_lock *lock, int *flags, int first_enq,
+ ldlm_error_t *err);
if (!recovering)
return;
- CERROR("timer will expire in %d seconds\n", OBD_RECOVERY_TIMEOUT / HZ);
+ CDEBUG(D_HA, "timer will expire in %u seconds\n",
+ OBD_RECOVERY_TIMEOUT / HZ);
mod_timer(&obd->obd_recovery_timer, jiffies + OBD_RECOVERY_TIMEOUT);
}
spin_unlock_bh(&obd->obd_processing_task_lock);
return;
}
- CERROR("%s: starting recovery timer\n", obd->obd_name);
+ CERROR("%s: starting recovery timer (%us)\n", obd->obd_name,
+ OBD_RECOVERY_TIMEOUT / HZ);
obd->obd_recovery_handler = handler;
obd->obd_recovery_timer.function = target_recovery_expired;
obd->obd_recovery_timer.data = (unsigned long)obd;
unsigned int cmd, unsigned long arg);
void ll_umount_begin(struct super_block *sb);
int ll_prep_inode(struct obd_export *exp, struct inode **inode,
- struct ptlrpc_request *req, int offset, struct super_block *sb);
-
+ struct ptlrpc_request *req, int offset, struct super_block *);
+__u32 get_uuid2int(const char *name, int len);
+struct dentry *ll_fh_to_dentry(struct super_block *sb, __u32 *data, int len,
+ int fhtype, int parent);
+int ll_dentry_to_fh(struct dentry *, __u32 *datap, int *lenp, int need_parent);
/* llite/symlink.c */
extern struct inode_operations ll_fast_symlink_inode_operations;
int lov_unpackmd(struct obd_export *exp, struct lov_stripe_md **lsm,
struct lov_mds_md *lmm, int lmmsize);
int lov_setstripe(struct obd_export *exp,
- struct lov_stripe_md **lsmp, struct lov_mds_md *lmmu);
+ struct lov_stripe_md **lsmp, struct lov_mds_md *lump);
int lov_getstripe(struct obd_export *exp,
- struct lov_stripe_md *lsm, struct lov_mds_md *lmmu);
+ struct lov_stripe_md *lsm, struct lov_mds_md *lump);
/* lproc_lov.c */
extern struct file_operations lov_proc_target_fops;
#define D_IOCTL (1 << 7) /* ioctl related information */
#define D_BLOCKS (1 << 8) /* ext2 block allocation */
#define D_NET (1 << 9) /* network communications */
-#define D_WARNING (1 << 10)
+#define D_WARNING (1 << 10) /* CWARN(...) == CDEBUG (D_WARNING, ...) */
#define D_BUFFS (1 << 11)
#define D_OTHER (1 << 12)
#define D_DENTRY (1 << 13)
while (1) {
unsigned long this_ping = jiffies;
long time_to_next_ping;
- struct l_wait_info lwi = LWI_TIMEOUT(10 * HZ, NULL, NULL);
+ struct l_wait_info lwi = LWI_TIMEOUT(obd_timeout * HZ,
+ NULL, NULL);
struct ptlrpc_request_set *set;
struct ptlrpc_request *req;
struct list_head *iter;
multiop $DIR/$tfile o_tSc &
pid=$!
# give multiop a chance to open
- sleep 1
+ sleep 1
rm -f $DIR/$tfile
replay_barrier mds
kill -USR1 $pid
test_16() {
replay_barrier mds
mcreate $DIR/$tfile
- unlink $DIR/$tfile
+ munlink $DIR/$tfile
mcreate $DIR/$tfile-2
fail mds
[ -e $DIR/$tfile ] && return 1
[ -e $DIR/$tfile-2 ] || return 2
- unlink $DIR/$tfile-2 || return 3
+ munlink $DIR/$tfile-2 || return 3
}
run_test 16 "|X| open(O_CREAT), unlink, touch new, unlink new"
[ -e $DIR/$tfile-2 ] || return 4
# this touch frequently fails
touch $DIR/$tfile-3 || return 5
- unlink $DIR/$tfile-2 || return 6
- unlink $DIR/$tfile-3 || return 7
+ munlink $DIR/$tfile-2 || return 6
+ munlink $DIR/$tfile-3 || return 7
return 0
}
run_test 18 "|X| open(O_CREAT), unlink, touch new, close, touch, unlink"
}
void
+check_ldlm_flock (void)
+{
+ BLANK_LINE ();
+ CHECK_STRUCT (ldlm_flock);
+ CHECK_MEMBER (ldlm_flock, start);
+ CHECK_MEMBER (ldlm_flock, end);
+ CHECK_MEMBER (ldlm_flock, pid);
+}
+
+void
check_ldlm_intent (void)
{
BLANK_LINE ();
CHECK_MEMBER (ldlm_lock_desc, l_resource);
CHECK_MEMBER (ldlm_lock_desc, l_req_mode);
CHECK_MEMBER (ldlm_lock_desc, l_granted_mode);
- CHECK_MEMBER (ldlm_lock_desc, l_extent);
+ CHECK_MEMBER (ldlm_lock_desc, l_policy_data);
CHECK_MEMBER (ldlm_lock_desc, l_version[RES_VERSION_SIZE]);
}
CHECK_MEMBER (ldlm_reply, lock_mode);
CHECK_MEMBER (ldlm_reply, lock_resource_name);
CHECK_MEMBER (ldlm_reply, lock_handle);
- CHECK_MEMBER (ldlm_reply, lock_extent);
+ CHECK_MEMBER (ldlm_reply, lock_policy_data);
CHECK_MEMBER (ldlm_reply, lock_policy_res1);
CHECK_MEMBER (ldlm_reply, lock_policy_res2);
}
check_lov_desc ();
check_ldlm_res_id ();
check_ldlm_extent ();
+ check_ldlm_flock ();
check_ldlm_intent ();
check_ldlm_resource_desc ();
check_ldlm_lock_desc ();