}
down(&lli->lli_och_sem);
if (*och_p) { /* Open handle is present */
- if (it_disposition(it, DISP_LOOKUP_POS) && /* Positive lookup */
- it_disposition(it, DISP_OPEN_OPEN)) { /* & OPEN happened */
+ if (it_disposition(it, DISP_OPEN_OPEN)) {
/* Well, there's extra open request that we do not need,
let's close it somehow. This will decref request. */
ll_release_openhandle(file->f_dentry, it);
mnt = do_kern_mount("ldiskfs", s_flags, lmd->lmd_dev, 0);
if (IS_ERR(mnt)) {
rc = PTR_ERR(mnt);
- CERROR("premount ldiskfs failed (%d), trying ext3\n", rc);
- /* If ldisk fails, try ext3 */
+ CERROR("premount ldiskfs failed (%d), is the ldiskfs module "
+ "available?\n", rc);
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0))
+ GOTO(out_free, rc);
+#else
+ /* If ldiskfs fails, try ext3 */
mnt = do_kern_mount("ext3", s_flags, lmd->lmd_dev, 0);
if (IS_ERR(mnt)) {
rc = PTR_ERR(mnt);
CERROR("premount ext3 failed: rc = %d\n", rc);
GOTO(out_free, rc);
}
+#endif
}
OBD_SET_CTXT_MAGIC(&mount_ctxt);
}
if (ia_valid & ATTR_SIZE || ia_valid & (ATTR_UID | ATTR_GID)) {
+ DQUOT_INIT(inode);
LOCK_INODE_MUTEX(inode);
locked = 1;
}
if (fcc != NULL)
memcpy(fcc, obdo_logcookie(oa), sizeof(*fcc));
}
+ DQUOT_INIT(dchild->d_inode);
/* we're gonna truncate it first in order to avoid possible deadlock:
* P1 P2
push_ctxt(&saved, &obd->obd_lvfs_ctxt, NULL);
cleanup_phase = 2;
+ DQUOT_INIT(inode);
+
down(&inode->i_sem);
oti->oti_handle = fsfilt_brw_start(obd, objcount, &fso, niocount, res,
oti);
{
int flipped, required_len, i;
- required_len = lustre_msg_hdr_size_v2(m->lm_bufcount);
+ /* Now we know the sender speaks my language. */
+ required_len = lustre_msg_hdr_size_v2(0);
if (len < required_len) {
- /* didn't receive all the buffer lengths */
- CERROR ("message length %d too small for %d buflens\n",
- len, m->lm_bufcount);
+ /* can't even look inside the message */
+ CERROR("message length %d too small for lustre_msg\n", len);
return -EINVAL;
}
__swab32s(&m->lm_repsize);
}
+ required_len = lustre_msg_hdr_size_v2(m->lm_bufcount);
+ if (len < required_len) {
+ /* didn't receive all the buffer lengths */
+ CERROR ("message length %d too small for %d buflens\n",
+ len, m->lm_bufcount);
+ return -EINVAL;
+ }
+
for (i = 0; i < m->lm_bufcount; i++) {
if (flipped)
__swab32s(&m->lm_buflens[i]);
if ((argc < 2) || (argv[argc - 1][0] == '-')) {
usage(stderr);
- ret = EINVAL;
- goto out;
+ return(EINVAL);
}
memset(&mop, 0, sizeof(mop));
{
struct obd_ioctl_data data;
static int mgs_device = -1;
+ char mgs[] = "$MGS";
int rc;
/* Always operates on MGS dev */
if (mgs_device == -1) {
do_disconnect(NULL, 1);
- rc = do_device("mgsioc", "MGS");
+ rc = do_device("mgsioc", mgs);
if (rc) {
errno = ENODEV;
return -1;
rc = do_name2dev(func, name);
if (rc >= N2D_OFF) {
ret = rc - N2D_OFF;
- printf("Name %s is device %d\n", name, ret);
+ // printf("Name %s is device %d\n", name, ret);
} else {
printf("No device found for name %s: %s\n",
name, strerror(rc));
static int do_device(char *func, char *devname)
{
- struct obd_ioctl_data data;
int dev;
- memset(&data, 0, sizeof(data));
-
dev = parse_devname(func, devname);
if (dev < 0)
return -1;