Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'afs-fixes-20190413' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs

Pull AFS fixes from David Howells:

- Stop using the deprecated get_seconds().

- Don't make tracepoint strings const as the section they go in isn't
read-only.

- Differentiate failure due to unmarshalling from other failure cases.
We shouldn't abort with RXGEN_CC/SS_UNMARSHAL if it's not due to
unmarshalling.

- Add a missing unlock_page().

- Fix the interaction between receiving a notification from a server
that it has invalidated all outstanding callback promises and a
client call that we're in the middle of making that will get a new
promise.

* tag 'afs-fixes-20190413' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs:
afs: Fix in-progess ops to ignore server-level callback invalidation
afs: Unlock pages for __pagevec_release()
afs: Differentiate abort due to unmarshalling from other errors
afs: Avoid section confusion in CM_NAME
afs: avoid deprecated get_seconds()

+10 -11
+1 -2
fs/afs/callback.c
··· 203 203 */ 204 204 void afs_init_callback_state(struct afs_server *server) 205 205 { 206 - if (!test_and_clear_bit(AFS_SERVER_FL_NEW, &server->flags)) 207 - server->cb_s_break++; 206 + server->cb_s_break++; 208 207 } 209 208 210 209 /*
+1 -1
fs/afs/cmservice.c
··· 34 34 static int afs_deliver_yfs_cb_callback(struct afs_call *); 35 35 36 36 #define CM_NAME(name) \ 37 - const char afs_SRXCB##name##_name[] __tracepoint_string = \ 37 + char afs_SRXCB##name##_name[] __tracepoint_string = \ 38 38 "CB." #name 39 39 40 40 /*
+1 -3
fs/afs/inode.c
··· 216 216 set_nlink(inode, 2); 217 217 inode->i_uid = GLOBAL_ROOT_UID; 218 218 inode->i_gid = GLOBAL_ROOT_GID; 219 - inode->i_ctime.tv_sec = get_seconds(); 220 - inode->i_ctime.tv_nsec = 0; 221 - inode->i_atime = inode->i_mtime = inode->i_ctime; 219 + inode->i_ctime = inode->i_atime = inode->i_mtime = current_time(inode); 222 220 inode->i_blocks = 0; 223 221 inode_set_iversion_raw(inode, 0); 224 222 inode->i_generation = 0;
+1 -3
fs/afs/internal.h
··· 474 474 time64_t put_time; /* Time at which last put */ 475 475 time64_t update_at; /* Time at which to next update the record */ 476 476 unsigned long flags; 477 - #define AFS_SERVER_FL_NEW 0 /* New server, don't inc cb_s_break */ 478 477 #define AFS_SERVER_FL_NOT_READY 1 /* The record is not ready for use */ 479 478 #define AFS_SERVER_FL_NOT_FOUND 2 /* VL server says no such server */ 480 479 #define AFS_SERVER_FL_VL_FAIL 3 /* Failed to access VL server */ ··· 826 827 827 828 static inline unsigned int afs_calc_vnode_cb_break(struct afs_vnode *vnode) 828 829 { 829 - return vnode->cb_break + vnode->cb_s_break + vnode->cb_v_break; 830 + return vnode->cb_break + vnode->cb_v_break; 830 831 } 831 832 832 833 static inline bool afs_cb_is_broken(unsigned int cb_break, ··· 834 835 const struct afs_cb_interest *cbi) 835 836 { 836 837 return !cbi || cb_break != (vnode->cb_break + 837 - cbi->server->cb_s_break + 838 838 vnode->volume->cb_v_break); 839 839 } 840 840
+5 -1
fs/afs/rxrpc.c
··· 572 572 case -ENODATA: 573 573 case -EBADMSG: 574 574 case -EMSGSIZE: 575 - default: 576 575 abort_code = RXGEN_CC_UNMARSHAL; 577 576 if (state != AFS_CALL_CL_AWAIT_REPLY) 578 577 abort_code = RXGEN_SS_UNMARSHAL; 579 578 rxrpc_kernel_abort_call(call->net->socket, call->rxcall, 580 579 abort_code, ret, "KUM"); 580 + goto local_abort; 581 + default: 582 + abort_code = RX_USER_ABORT; 583 + rxrpc_kernel_abort_call(call->net->socket, call->rxcall, 584 + abort_code, ret, "KER"); 581 585 goto local_abort; 582 586 } 583 587 }
-1
fs/afs/server.c
··· 226 226 RCU_INIT_POINTER(server->addresses, alist); 227 227 server->addr_version = alist->version; 228 228 server->uuid = *uuid; 229 - server->flags = (1UL << AFS_SERVER_FL_NEW); 230 229 server->update_at = ktime_get_real_seconds() + afs_server_update_delay; 231 230 rwlock_init(&server->fs_lock); 232 231 INIT_HLIST_HEAD(&server->cb_volumes);
+1
fs/afs/write.c
··· 264 264 first = page->index + 1; 265 265 lock_page(page); 266 266 generic_error_remove_page(mapping, page); 267 + unlock_page(page); 267 268 } 268 269 269 270 __pagevec_release(&pv);