* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*
- * Copyright (c) 2011, 2012, Intel Corporation.
+ * Copyright (c) 2012, 2013, Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
/* prerequisite for linux/xattr.h */
#include <linux/fs.h>
-/* ext_depth() */
-#include <ldiskfs/ldiskfs.h>
-#include <ldiskfs/ldiskfs_jbd2.h>
-#include <ldiskfs/ldiskfs_extents.h>
-
/*
* struct OBD_{ALLOC,FREE}*()
* OBD_FAIL_CHECK
#include "osd_internal.h"
+/* ext_depth() */
+#include <ldiskfs/ldiskfs_extents.h>
+
#ifndef HAVE_PAGE_CONSTANT
#define mapping_cap_page_constant_write(mapping) 0
#define SetPageConstant(page) do {} while (0)
}
}
-#ifndef __REQ_WRITE /* pre-2.6.35 */
+#ifndef REQ_WRITE /* pre-2.6.35 */
#define __REQ_WRITE BIO_RW
#endif
/* ignore quota for the whole request if any page is from
* client cache or written by root.
*
+ * XXX once we drop the 1.8 client support, the checking
+ * for whether page is from cache can be simplified as:
+ * !(lnb[i].flags & OBD_BRW_SYNC)
+ *
* XXX we could handle this on per-lnb basis as done by
* grant. */
if ((lnb[i].flags & OBD_BRW_NOQUOTA) ||
- !(lnb[i].flags & OBD_BRW_SYNC))
+ (lnb[i].flags & (OBD_BRW_FROM_GRANT | OBD_BRW_SYNC)) ==
+ OBD_BRW_FROM_GRANT)
ignore_quota = true;
}
if (isize > i_size_read(inode)) {
i_size_write(inode, isize);
LDISKFS_I(inode)->i_disksize = isize;
- inode->i_sb->s_op->dirty_inode(inode);
+ ll_dirty_inode(inode, I_DIRTY_DATASYNC);
}
rc = osd_do_bio(osd, inode, iobuf);
oh = container_of0(handle, struct osd_thandle, ot_super);
LASSERT(oh->ot_handle == NULL);
- /* XXX: size == 0 or INT_MAX indicating a catalog header update or
- * llog write, see comment in mdd_declare_llog_record().
- *
- * This hack will be removed with llog over OSD landing
- */
- if (size == DECLARE_LLOG_REWRITE)
- credits = 2;
- else if (size == DECLARE_LLOG_WRITE)
- credits = 6;
- else
- credits = osd_dto_credits_noquota[DTO_WRITE_BLOCK];
+ credits = osd_dto_credits_noquota[DTO_WRITE_BLOCK];
osd_trans_declare_op(env, oh, OSD_OT_WRITE, credits);
memcpy((char *)&LDISKFS_I(inode)->i_data, (char *)buffer, buflen);
LDISKFS_I(inode)->i_disksize = buflen;
i_size_write(inode, buflen);
- inode->i_sb->s_op->dirty_inode(inode);
+ ll_dirty_inode(inode, I_DIRTY_DATASYNC);
return 0;
}
dirty_inode = 1;
}
spin_unlock(&inode->i_lock);
- if (dirty_inode)
- inode->i_sb->s_op->dirty_inode(inode);
+ if (dirty_inode)
+ ll_dirty_inode(inode, I_DIRTY_DATASYNC);
}
if (err == 0)
LASSERT(inode);
dentry->d_inode = inode;
+ dentry->d_sb = inode->i_sb;
file->f_dentry = dentry;
file->f_mapping = inode->i_mapping;
file->f_op = inode->i_fop;
.dbo_declare_write_commit = osd_declare_write_commit,
.dbo_write_commit = osd_write_commit,
.dbo_read_prep = osd_read_prep,
- .do_declare_punch = osd_declare_punch,
- .do_punch = osd_punch,
+ .dbo_declare_punch = osd_declare_punch,
+ .dbo_punch = osd_punch,
.dbo_fiemap_get = osd_fiemap_get,
};