&ci->i_layout, snapc,
page_off, len,
ci->i_truncate_seq, ci->i_truncate_size,
+ &inode->i_mtime,
&page, 1, 0, 0);
if (err < 0) {
dout(20, "writepage setting page error %p\n", page);
CEPH_OSD_OP_ONDISK,
snapc, do_sync,
ci->i_truncate_seq,
- ci->i_truncate_size);
+ ci->i_truncate_size,
+ &inode->i_mtime);
max_pages = req->r_num_pages;
rc = -ENOMEM;
int flags;
int do_sync = 0;
int ret;
+ struct timespec mtime = CURRENT_TIME;
if (ceph_snap(file->f_dentry->d_inode) != CEPH_NOSNAP)
return -EROFS;
CEPH_OSD_OP_WRITE, flags,
ci->i_snap_realm->cached_context,
do_sync,
- ci->i_truncate_seq, ci->i_truncate_size);
+ ci->i_truncate_seq, ci->i_truncate_size,
+ &mtime);
if (IS_ERR(req))
return PTR_ERR(req);
struct ceph_snap_context *snapc,
int do_sync,
u32 truncate_seq,
- u64 truncate_size)
+ u64 truncate_size,
+ struct timespec *mtime)
{
struct ceph_osd_request *req;
struct ceph_msg *msg;
head->client_inc = cpu_to_le32(1); /* always, for now. */
head->flags = cpu_to_le32(flags);
+ if (flags & CEPH_OSD_OP_MODIFY)
+ ceph_encode_timespec(&head->mtime, mtime);
head->num_ops = cpu_to_le16(num_op);
op->op = cpu_to_le16(opcode);
vino.snap, off, len);
req = ceph_osdc_new_request(osdc, layout, vino, off, &len,
CEPH_OSD_OP_READ, 0, NULL, 0,
- truncate_seq, truncate_size);
+ truncate_seq, truncate_size, NULL);
if (IS_ERR(req))
return PTR_ERR(req);
struct ceph_snap_context *snapc,
u64 off, u64 len,
u32 truncate_seq, u64 truncate_size,
+ struct timespec *mtime,
struct page **pages, int num_pages,
int flags, int do_sync)
{
flags | CEPH_OSD_OP_ONDISK |
CEPH_OSD_OP_MODIFY,
snapc, do_sync,
- truncate_seq, truncate_size);
+ truncate_seq, truncate_size, mtime);
if (IS_ERR(req))
return PTR_ERR(req);
u64 offset, u64 *len, int op, int flags,
struct ceph_snap_context *snapc,
int do_sync, u32 truncate_seq,
- u64 truncate_size);
+ u64 truncate_size,
+ struct timespec *mtime);
static inline void ceph_osdc_get_request(struct ceph_osd_request *req)
{
struct ceph_snap_context *sc,
u64 off, u64 len,
u32 truncate_seq, u64 truncate_size,
+ struct timespec *mtime,
struct page **pages, int nr_pages,
int flags, int do_sync);