mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-24 04:34:08 +08:00
AFS fixes
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEEqG5UsNXhtOCrfGQP+7dXa6fLC2sFAmD4LMkACgkQ+7dXa6fL C2t4vg//eOjVirl2L9NSwW27btAv3tySeX7zN78i4IIy1KesVTV4An/yNYnZ1XDg yackjIIgRaw/pX+W/dWiQalRtAcYno4vFam874lzBq+Yourk9j+7mU7WDtkofRh4 UtuWAyARGVfLZdkJQp1Eb1YoZj0oro31Qa7eFeHQ/1Wlx6Wo1gdsRAdGfRpukLeC fTv/DXrpK+cC36ENZjP3VuhfsOAKIxKVqf7rLKiMBbeyAGW7jRs3fSTxgOJAgJN0 opj/WTGZf8vskq+u3uTbAv8dwK9CakqB6QEkDq22kZSVh+LSxKzIB6E/3wSXfhAj 1NAKUVQb4e6caXKk/vxFUhnyq8wWdzWW6ExVzH2DYSdNn442A6eo9g6d6qE7wIGK ui0sL1p7ilwV/1aBVA7imYM5bSS3HDpVFCW1+HCZpbVxnARDv87su8iOJGErWpz+ 5fDqifhm+Wrtrhoo05RnsYoygCf5elnz5iUu4MaOYKno1dFQrHBBJhFsv8PAduUq nZkr+q8HUFH7EYcUjidJiMR+NSiVpe8bCV4LoaGczY4j/AYc5rOfD1s3kW0tfiqG zqx+pGy5AXTwrZqzVf28I5T6cBCW1GxLnFLmSWZ4DsQdNGziYbPUTYDCJcJxfT0U cASaEXQSItfxlkVw+JIr+Hb/QXYEfoNEdwWLvUQ2LrPueJwH2V8= =Pn/w -----END PGP SIGNATURE----- Merge tag 'afs-fixes-20210721' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs Pull AFS fixes from David Howells: - Fix a tracepoint that causes one of the tracing subsystem query files to crash if the module is loaded - Fix afs_writepages() to take account of whether the storage rpc actually succeeded when updating the cyclic writeback counter - Fix some error code propagation/handling - Fix place where afs_writepages() was setting writeback_index to a file position rather than a page index * tag 'afs-fixes-20210721' of git://git.kernel.org/pub/scm/linux/kernel/git/dhowells/linux-fs: afs: Remove redundant assignment to ret afs: Fix setting of writeback_index afs: check function return afs: Fix tracepoint string placement with built-in AFS
This commit is contained in:
commit
b4e62aaf95
@ -29,16 +29,11 @@ static void SRXAFSCB_TellMeAboutYourself(struct work_struct *);
|
||||
|
||||
static int afs_deliver_yfs_cb_callback(struct afs_call *);
|
||||
|
||||
#define CM_NAME(name) \
|
||||
char afs_SRXCB##name##_name[] __tracepoint_string = \
|
||||
"CB." #name
|
||||
|
||||
/*
|
||||
* CB.CallBack operation type
|
||||
*/
|
||||
static CM_NAME(CallBack);
|
||||
static const struct afs_call_type afs_SRXCBCallBack = {
|
||||
.name = afs_SRXCBCallBack_name,
|
||||
.name = "CB.CallBack",
|
||||
.deliver = afs_deliver_cb_callback,
|
||||
.destructor = afs_cm_destructor,
|
||||
.work = SRXAFSCB_CallBack,
|
||||
@ -47,9 +42,8 @@ static const struct afs_call_type afs_SRXCBCallBack = {
|
||||
/*
|
||||
* CB.InitCallBackState operation type
|
||||
*/
|
||||
static CM_NAME(InitCallBackState);
|
||||
static const struct afs_call_type afs_SRXCBInitCallBackState = {
|
||||
.name = afs_SRXCBInitCallBackState_name,
|
||||
.name = "CB.InitCallBackState",
|
||||
.deliver = afs_deliver_cb_init_call_back_state,
|
||||
.destructor = afs_cm_destructor,
|
||||
.work = SRXAFSCB_InitCallBackState,
|
||||
@ -58,9 +52,8 @@ static const struct afs_call_type afs_SRXCBInitCallBackState = {
|
||||
/*
|
||||
* CB.InitCallBackState3 operation type
|
||||
*/
|
||||
static CM_NAME(InitCallBackState3);
|
||||
static const struct afs_call_type afs_SRXCBInitCallBackState3 = {
|
||||
.name = afs_SRXCBInitCallBackState3_name,
|
||||
.name = "CB.InitCallBackState3",
|
||||
.deliver = afs_deliver_cb_init_call_back_state3,
|
||||
.destructor = afs_cm_destructor,
|
||||
.work = SRXAFSCB_InitCallBackState,
|
||||
@ -69,9 +62,8 @@ static const struct afs_call_type afs_SRXCBInitCallBackState3 = {
|
||||
/*
|
||||
* CB.Probe operation type
|
||||
*/
|
||||
static CM_NAME(Probe);
|
||||
static const struct afs_call_type afs_SRXCBProbe = {
|
||||
.name = afs_SRXCBProbe_name,
|
||||
.name = "CB.Probe",
|
||||
.deliver = afs_deliver_cb_probe,
|
||||
.destructor = afs_cm_destructor,
|
||||
.work = SRXAFSCB_Probe,
|
||||
@ -80,9 +72,8 @@ static const struct afs_call_type afs_SRXCBProbe = {
|
||||
/*
|
||||
* CB.ProbeUuid operation type
|
||||
*/
|
||||
static CM_NAME(ProbeUuid);
|
||||
static const struct afs_call_type afs_SRXCBProbeUuid = {
|
||||
.name = afs_SRXCBProbeUuid_name,
|
||||
.name = "CB.ProbeUuid",
|
||||
.deliver = afs_deliver_cb_probe_uuid,
|
||||
.destructor = afs_cm_destructor,
|
||||
.work = SRXAFSCB_ProbeUuid,
|
||||
@ -91,9 +82,8 @@ static const struct afs_call_type afs_SRXCBProbeUuid = {
|
||||
/*
|
||||
* CB.TellMeAboutYourself operation type
|
||||
*/
|
||||
static CM_NAME(TellMeAboutYourself);
|
||||
static const struct afs_call_type afs_SRXCBTellMeAboutYourself = {
|
||||
.name = afs_SRXCBTellMeAboutYourself_name,
|
||||
.name = "CB.TellMeAboutYourself",
|
||||
.deliver = afs_deliver_cb_tell_me_about_yourself,
|
||||
.destructor = afs_cm_destructor,
|
||||
.work = SRXAFSCB_TellMeAboutYourself,
|
||||
@ -102,9 +92,8 @@ static const struct afs_call_type afs_SRXCBTellMeAboutYourself = {
|
||||
/*
|
||||
* YFS CB.CallBack operation type
|
||||
*/
|
||||
static CM_NAME(YFS_CallBack);
|
||||
static const struct afs_call_type afs_SRXYFSCB_CallBack = {
|
||||
.name = afs_SRXCBYFS_CallBack_name,
|
||||
.name = "YFSCB.CallBack",
|
||||
.deliver = afs_deliver_yfs_cb_callback,
|
||||
.destructor = afs_cm_destructor,
|
||||
.work = SRXAFSCB_CallBack,
|
||||
|
10
fs/afs/dir.c
10
fs/afs/dir.c
@ -656,7 +656,6 @@ static int afs_do_lookup_one(struct inode *dir, struct dentry *dentry,
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = -ENOENT;
|
||||
if (!cookie.found) {
|
||||
_leave(" = -ENOENT [not found]");
|
||||
return -ENOENT;
|
||||
@ -2020,17 +2019,20 @@ static int afs_rename(struct user_namespace *mnt_userns, struct inode *old_dir,
|
||||
|
||||
if (d_count(new_dentry) > 2) {
|
||||
/* copy the target dentry's name */
|
||||
ret = -ENOMEM;
|
||||
op->rename.tmp = d_alloc(new_dentry->d_parent,
|
||||
&new_dentry->d_name);
|
||||
if (!op->rename.tmp)
|
||||
if (!op->rename.tmp) {
|
||||
op->error = -ENOMEM;
|
||||
goto error;
|
||||
}
|
||||
|
||||
ret = afs_sillyrename(new_dvnode,
|
||||
AFS_FS_I(d_inode(new_dentry)),
|
||||
new_dentry, op->key);
|
||||
if (ret)
|
||||
if (ret) {
|
||||
op->error = ret;
|
||||
goto error;
|
||||
}
|
||||
|
||||
op->dentry_2 = op->rename.tmp;
|
||||
op->rename.rehash = NULL;
|
||||
|
@ -771,14 +771,20 @@ int afs_writepages(struct address_space *mapping,
|
||||
if (wbc->range_cyclic) {
|
||||
start = mapping->writeback_index * PAGE_SIZE;
|
||||
ret = afs_writepages_region(mapping, wbc, start, LLONG_MAX, &next);
|
||||
if (start > 0 && wbc->nr_to_write > 0 && ret == 0)
|
||||
ret = afs_writepages_region(mapping, wbc, 0, start,
|
||||
&next);
|
||||
mapping->writeback_index = next / PAGE_SIZE;
|
||||
if (ret == 0) {
|
||||
mapping->writeback_index = next / PAGE_SIZE;
|
||||
if (start > 0 && wbc->nr_to_write > 0) {
|
||||
ret = afs_writepages_region(mapping, wbc, 0,
|
||||
start, &next);
|
||||
if (ret == 0)
|
||||
mapping->writeback_index =
|
||||
next / PAGE_SIZE;
|
||||
}
|
||||
}
|
||||
} else if (wbc->range_start == 0 && wbc->range_end == LLONG_MAX) {
|
||||
ret = afs_writepages_region(mapping, wbc, 0, LLONG_MAX, &next);
|
||||
if (wbc->nr_to_write > 0)
|
||||
mapping->writeback_index = next;
|
||||
if (wbc->nr_to_write > 0 && ret == 0)
|
||||
mapping->writeback_index = next / PAGE_SIZE;
|
||||
} else {
|
||||
ret = afs_writepages_region(mapping, wbc,
|
||||
wbc->range_start, wbc->range_end, &next);
|
||||
|
@ -174,6 +174,34 @@ enum afs_vl_operation {
|
||||
afs_VL_GetCapabilities = 65537, /* AFS Get VL server capabilities */
|
||||
};
|
||||
|
||||
enum afs_cm_operation {
|
||||
afs_CB_CallBack = 204, /* AFS break callback promises */
|
||||
afs_CB_InitCallBackState = 205, /* AFS initialise callback state */
|
||||
afs_CB_Probe = 206, /* AFS probe client */
|
||||
afs_CB_GetLock = 207, /* AFS get contents of CM lock table */
|
||||
afs_CB_GetCE = 208, /* AFS get cache file description */
|
||||
afs_CB_GetXStatsVersion = 209, /* AFS get version of extended statistics */
|
||||
afs_CB_GetXStats = 210, /* AFS get contents of extended statistics data */
|
||||
afs_CB_InitCallBackState3 = 213, /* AFS initialise callback state, version 3 */
|
||||
afs_CB_ProbeUuid = 214, /* AFS check the client hasn't rebooted */
|
||||
};
|
||||
|
||||
enum yfs_cm_operation {
|
||||
yfs_CB_Probe = 206, /* YFS probe client */
|
||||
yfs_CB_GetLock = 207, /* YFS get contents of CM lock table */
|
||||
yfs_CB_XStatsVersion = 209, /* YFS get version of extended statistics */
|
||||
yfs_CB_GetXStats = 210, /* YFS get contents of extended statistics data */
|
||||
yfs_CB_InitCallBackState3 = 213, /* YFS initialise callback state, version 3 */
|
||||
yfs_CB_ProbeUuid = 214, /* YFS check the client hasn't rebooted */
|
||||
yfs_CB_GetServerPrefs = 215,
|
||||
yfs_CB_GetCellServDV = 216,
|
||||
yfs_CB_GetLocalCell = 217,
|
||||
yfs_CB_GetCacheConfig = 218,
|
||||
yfs_CB_GetCellByNum = 65537,
|
||||
yfs_CB_TellMeAboutYourself = 65538, /* get client capabilities */
|
||||
yfs_CB_CallBack = 64204,
|
||||
};
|
||||
|
||||
enum afs_edit_dir_op {
|
||||
afs_edit_dir_create,
|
||||
afs_edit_dir_create_error,
|
||||
@ -436,6 +464,32 @@ enum afs_cb_break_reason {
|
||||
EM(afs_YFSVL_GetCellName, "YFSVL.GetCellName") \
|
||||
E_(afs_VL_GetCapabilities, "VL.GetCapabilities")
|
||||
|
||||
#define afs_cm_operations \
|
||||
EM(afs_CB_CallBack, "CB.CallBack") \
|
||||
EM(afs_CB_InitCallBackState, "CB.InitCallBackState") \
|
||||
EM(afs_CB_Probe, "CB.Probe") \
|
||||
EM(afs_CB_GetLock, "CB.GetLock") \
|
||||
EM(afs_CB_GetCE, "CB.GetCE") \
|
||||
EM(afs_CB_GetXStatsVersion, "CB.GetXStatsVersion") \
|
||||
EM(afs_CB_GetXStats, "CB.GetXStats") \
|
||||
EM(afs_CB_InitCallBackState3, "CB.InitCallBackState3") \
|
||||
E_(afs_CB_ProbeUuid, "CB.ProbeUuid")
|
||||
|
||||
#define yfs_cm_operations \
|
||||
EM(yfs_CB_Probe, "YFSCB.Probe") \
|
||||
EM(yfs_CB_GetLock, "YFSCB.GetLock") \
|
||||
EM(yfs_CB_XStatsVersion, "YFSCB.XStatsVersion") \
|
||||
EM(yfs_CB_GetXStats, "YFSCB.GetXStats") \
|
||||
EM(yfs_CB_InitCallBackState3, "YFSCB.InitCallBackState3") \
|
||||
EM(yfs_CB_ProbeUuid, "YFSCB.ProbeUuid") \
|
||||
EM(yfs_CB_GetServerPrefs, "YFSCB.GetServerPrefs") \
|
||||
EM(yfs_CB_GetCellServDV, "YFSCB.GetCellServDV") \
|
||||
EM(yfs_CB_GetLocalCell, "YFSCB.GetLocalCell") \
|
||||
EM(yfs_CB_GetCacheConfig, "YFSCB.GetCacheConfig") \
|
||||
EM(yfs_CB_GetCellByNum, "YFSCB.GetCellByNum") \
|
||||
EM(yfs_CB_TellMeAboutYourself, "YFSCB.TellMeAboutYourself") \
|
||||
E_(yfs_CB_CallBack, "YFSCB.CallBack")
|
||||
|
||||
#define afs_edit_dir_ops \
|
||||
EM(afs_edit_dir_create, "create") \
|
||||
EM(afs_edit_dir_create_error, "c_fail") \
|
||||
@ -569,6 +623,8 @@ afs_server_traces;
|
||||
afs_cell_traces;
|
||||
afs_fs_operations;
|
||||
afs_vl_operations;
|
||||
afs_cm_operations;
|
||||
yfs_cm_operations;
|
||||
afs_edit_dir_ops;
|
||||
afs_edit_dir_reasons;
|
||||
afs_eproto_causes;
|
||||
@ -649,20 +705,21 @@ TRACE_EVENT(afs_cb_call,
|
||||
|
||||
TP_STRUCT__entry(
|
||||
__field(unsigned int, call )
|
||||
__field(const char *, name )
|
||||
__field(u32, op )
|
||||
__field(u16, service_id )
|
||||
),
|
||||
|
||||
TP_fast_assign(
|
||||
__entry->call = call->debug_id;
|
||||
__entry->name = call->type->name;
|
||||
__entry->op = call->operation_ID;
|
||||
__entry->service_id = call->service_id;
|
||||
),
|
||||
|
||||
TP_printk("c=%08x %s o=%u",
|
||||
TP_printk("c=%08x %s",
|
||||
__entry->call,
|
||||
__entry->name,
|
||||
__entry->op)
|
||||
__entry->service_id == 2501 ?
|
||||
__print_symbolic(__entry->op, yfs_cm_operations) :
|
||||
__print_symbolic(__entry->op, afs_cm_operations))
|
||||
);
|
||||
|
||||
TRACE_EVENT(afs_call,
|
||||
|
Loading…
Reference in New Issue
Block a user