Loading fs/cifs/file.c +18 −9 Original line number Diff line number Diff line Loading @@ -2366,6 +2366,23 @@ cifs_readdata_release(struct kref *refcount) kfree(rdata); } static int cifs_retry_async_readv(struct cifs_readdata *rdata) { int rc; do { if (rdata->cfile->invalidHandle) { rc = cifs_reopen_file(rdata->cfile, true); if (rc != 0) continue; } rc = cifs_async_readv(rdata); } while (rc == -EAGAIN); return rc; } static ssize_t cifs_iovec_read(struct file *file, const struct iovec *iov, unsigned long nr_segs, loff_t *poffset) Loading Loading @@ -2852,15 +2869,7 @@ static int cifs_readpages(struct file *file, struct address_space *mapping, rdata->marshal_iov = cifs_readpages_marshal_iov; list_splice_init(&tmplist, &rdata->pages); do { if (open_file->invalidHandle) { rc = cifs_reopen_file(open_file, true); if (rc != 0) continue; } rc = cifs_async_readv(rdata); } while (rc == -EAGAIN); rc = cifs_retry_async_readv(rdata); if (rc != 0) { list_for_each_entry_safe(page, tpage, &rdata->pages, lru) { Loading Loading
fs/cifs/file.c +18 −9 Original line number Diff line number Diff line Loading @@ -2366,6 +2366,23 @@ cifs_readdata_release(struct kref *refcount) kfree(rdata); } static int cifs_retry_async_readv(struct cifs_readdata *rdata) { int rc; do { if (rdata->cfile->invalidHandle) { rc = cifs_reopen_file(rdata->cfile, true); if (rc != 0) continue; } rc = cifs_async_readv(rdata); } while (rc == -EAGAIN); return rc; } static ssize_t cifs_iovec_read(struct file *file, const struct iovec *iov, unsigned long nr_segs, loff_t *poffset) Loading Loading @@ -2852,15 +2869,7 @@ static int cifs_readpages(struct file *file, struct address_space *mapping, rdata->marshal_iov = cifs_readpages_marshal_iov; list_splice_init(&tmplist, &rdata->pages); do { if (open_file->invalidHandle) { rc = cifs_reopen_file(open_file, true); if (rc != 0) continue; } rc = cifs_async_readv(rdata); } while (rc == -EAGAIN); rc = cifs_retry_async_readv(rdata); if (rc != 0) { list_for_each_entry_safe(page, tpage, &rdata->pages, lru) { Loading