libceph: use timespec64 for r_mtime
The request mtime field is used all over ceph, and is currently represented as a 'timespec' structure in Linux. This changes it to timespec64 to allow times beyond 2038, modifying all users at the same time. [ Remove now redundant ts variable in writepage_nounlock(). ] Signed-off-by: Arnd Bergmann <arnd@arndb.de> Reviewed-by: Ilya Dryomov <idryomov@gmail.com> Signed-off-by: Ilya Dryomov <idryomov@gmail.com>
This commit is contained in:

committed by
Ilya Dryomov

parent
9bbeab41ce
commit
fac02ddf91
@@ -574,7 +574,6 @@ static u64 get_writepages_data_length(struct inode *inode,
|
||||
*/
|
||||
static int writepage_nounlock(struct page *page, struct writeback_control *wbc)
|
||||
{
|
||||
struct timespec ts;
|
||||
struct inode *inode;
|
||||
struct ceph_inode_info *ci;
|
||||
struct ceph_fs_client *fsc;
|
||||
@@ -625,12 +624,11 @@ static int writepage_nounlock(struct page *page, struct writeback_control *wbc)
|
||||
set_bdi_congested(inode_to_bdi(inode), BLK_RW_ASYNC);
|
||||
|
||||
set_page_writeback(page);
|
||||
ts = timespec64_to_timespec(inode->i_mtime);
|
||||
err = ceph_osdc_writepages(&fsc->client->osdc, ceph_vino(inode),
|
||||
&ci->i_layout, snapc, page_off, len,
|
||||
ceph_wbc.truncate_seq,
|
||||
ceph_wbc.truncate_size,
|
||||
&ts, &page, 1);
|
||||
&inode->i_mtime, &page, 1);
|
||||
if (err < 0) {
|
||||
struct writeback_control tmp_wbc;
|
||||
if (!wbc)
|
||||
@@ -1134,7 +1132,7 @@ new_request:
|
||||
pages = NULL;
|
||||
}
|
||||
|
||||
req->r_mtime = timespec64_to_timespec(inode->i_mtime);
|
||||
req->r_mtime = inode->i_mtime;
|
||||
rc = ceph_osdc_start_request(&fsc->client->osdc, req, true);
|
||||
BUG_ON(rc);
|
||||
req = NULL;
|
||||
@@ -1734,7 +1732,7 @@ int ceph_uninline_data(struct file *filp, struct page *locked_page)
|
||||
goto out;
|
||||
}
|
||||
|
||||
req->r_mtime = timespec64_to_timespec(inode->i_mtime);
|
||||
req->r_mtime = inode->i_mtime;
|
||||
err = ceph_osdc_start_request(&fsc->client->osdc, req, false);
|
||||
if (!err)
|
||||
err = ceph_osdc_wait_request(&fsc->client->osdc, req);
|
||||
@@ -1776,7 +1774,7 @@ int ceph_uninline_data(struct file *filp, struct page *locked_page)
|
||||
goto out_put;
|
||||
}
|
||||
|
||||
req->r_mtime = timespec64_to_timespec(inode->i_mtime);
|
||||
req->r_mtime = inode->i_mtime;
|
||||
err = ceph_osdc_start_request(&fsc->client->osdc, req, false);
|
||||
if (!err)
|
||||
err = ceph_osdc_wait_request(&fsc->client->osdc, req);
|
||||
@@ -1937,7 +1935,7 @@ static int __ceph_pool_perm_get(struct ceph_inode_info *ci,
|
||||
0, false, true);
|
||||
err = ceph_osdc_start_request(&fsc->client->osdc, rd_req, false);
|
||||
|
||||
wr_req->r_mtime = timespec64_to_timespec(ci->vfs_inode.i_mtime);
|
||||
wr_req->r_mtime = ci->vfs_inode.i_mtime;
|
||||
err2 = ceph_osdc_start_request(&fsc->client->osdc, wr_req, false);
|
||||
|
||||
if (!err)
|
||||
|
@@ -721,7 +721,7 @@ struct ceph_aio_request {
|
||||
struct list_head osd_reqs;
|
||||
unsigned num_reqs;
|
||||
atomic_t pending_reqs;
|
||||
struct timespec mtime;
|
||||
struct timespec64 mtime;
|
||||
struct ceph_cap_flush *prealloc_cf;
|
||||
};
|
||||
|
||||
@@ -923,7 +923,7 @@ ceph_direct_read_write(struct kiocb *iocb, struct iov_iter *iter,
|
||||
int num_pages = 0;
|
||||
int flags;
|
||||
int ret;
|
||||
struct timespec mtime = timespec64_to_timespec(current_time(inode));
|
||||
struct timespec64 mtime = current_time(inode);
|
||||
size_t count = iov_iter_count(iter);
|
||||
loff_t pos = iocb->ki_pos;
|
||||
bool write = iov_iter_rw(iter) == WRITE;
|
||||
@@ -1131,7 +1131,7 @@ ceph_sync_write(struct kiocb *iocb, struct iov_iter *from, loff_t pos,
|
||||
int flags;
|
||||
int ret;
|
||||
bool check_caps = false;
|
||||
struct timespec mtime = timespec64_to_timespec(current_time(inode));
|
||||
struct timespec64 mtime = current_time(inode);
|
||||
size_t count = iov_iter_count(from);
|
||||
|
||||
if (ceph_snap(file_inode(file)) != CEPH_NOSNAP)
|
||||
@@ -1663,7 +1663,7 @@ static int ceph_zero_partial_object(struct inode *inode,
|
||||
goto out;
|
||||
}
|
||||
|
||||
req->r_mtime = timespec64_to_timespec(inode->i_mtime);
|
||||
req->r_mtime = inode->i_mtime;
|
||||
ret = ceph_osdc_start_request(&fsc->client->osdc, req, false);
|
||||
if (!ret) {
|
||||
ret = ceph_osdc_wait_request(&fsc->client->osdc, req);
|
||||
|
Reference in New Issue
Block a user