Merge branch 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2
* 'upstream-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jlbec/ocfs2: ocfs2/net: Use wait_event() in o2net_send_message_vec() ocfs2: Adjust rightmost path in ocfs2_add_branch. ocfs2: fdatasync should skip unimportant metadata writeout ocfs2: Remove redundant gotos in ocfs2_mount_volume() ocfs2: Add statistics for the checksum and ecc operations. ocfs2 patch to track delayed orphan scan timer statistics ocfs2: timer to queue scan of all orphan slots ocfs2: Correct ordering of ip_alloc_sem and localloc locks for directories ocfs2: Fix possible deadlock in quota recovery ocfs2: Fix possible deadlock with quotas in ocfs2_setattr() ocfs2: Fix lock inversion in ocfs2_local_read_info() ocfs2: Fix possible deadlock in ocfs2_global_read_dquot() ocfs2: update comments in masklog.h ocfs2: Don't printk the error when listing too many xattrs.
This commit is contained in:
@@ -48,34 +48,33 @@
|
||||
* only emit the appropriage printk() when the caller passes in a constant
|
||||
* mask, as is almost always the case.
|
||||
*
|
||||
* All this bitmask nonsense is hidden from the /proc interface so that Joel
|
||||
* doesn't have an aneurism. Reading the file gives a straight forward
|
||||
* indication of which bits are on or off:
|
||||
* ENTRY off
|
||||
* EXIT off
|
||||
* All this bitmask nonsense is managed from the files under
|
||||
* /sys/fs/o2cb/logmask/. Reading the files gives a straightforward
|
||||
* indication of which bits are allowed (allow) or denied (off/deny).
|
||||
* ENTRY deny
|
||||
* EXIT deny
|
||||
* TCP off
|
||||
* MSG off
|
||||
* SOCKET off
|
||||
* ERROR off
|
||||
* NOTICE on
|
||||
* ERROR allow
|
||||
* NOTICE allow
|
||||
*
|
||||
* Writing changes the state of a given bit and requires a strictly formatted
|
||||
* single write() call:
|
||||
*
|
||||
* write(fd, "ENTRY on", 8);
|
||||
* write(fd, "allow", 5);
|
||||
*
|
||||
* would turn the entry bit on. "1" is also accepted in the place of "on", and
|
||||
* "off" and "0" behave as expected.
|
||||
* Echoing allow/deny/off string into the logmask files can flip the bits
|
||||
* on or off as expected; here is the bash script for example:
|
||||
*
|
||||
* Some trivial shell can flip all the bits on or off:
|
||||
* log_mask="/sys/fs/o2cb/log_mask"
|
||||
* for node in ENTRY EXIT TCP MSG SOCKET ERROR NOTICE; do
|
||||
* echo allow >"$log_mask"/"$node"
|
||||
* done
|
||||
*
|
||||
* log_mask="/proc/fs/ocfs2_nodemanager/log_mask"
|
||||
* cat $log_mask | (
|
||||
* while read bit status; do
|
||||
* # $1 is "on" or "off", say
|
||||
* echo "$bit $1" > $log_mask
|
||||
* done
|
||||
* )
|
||||
* The debugfs.ocfs2 tool can also flip the bits with the -l option:
|
||||
*
|
||||
* debugfs.ocfs2 -l TCP allow
|
||||
*/
|
||||
|
||||
/* for task_struct */
|
||||
|
@@ -974,7 +974,7 @@ static int o2net_tx_can_proceed(struct o2net_node *nn,
|
||||
int o2net_send_message_vec(u32 msg_type, u32 key, struct kvec *caller_vec,
|
||||
size_t caller_veclen, u8 target_node, int *status)
|
||||
{
|
||||
int ret, error = 0;
|
||||
int ret;
|
||||
struct o2net_msg *msg = NULL;
|
||||
size_t veclen, caller_bytes = 0;
|
||||
struct kvec *vec = NULL;
|
||||
@@ -1015,10 +1015,7 @@ int o2net_send_message_vec(u32 msg_type, u32 key, struct kvec *caller_vec,
|
||||
|
||||
o2net_set_nst_sock_time(&nst);
|
||||
|
||||
ret = wait_event_interruptible(nn->nn_sc_wq,
|
||||
o2net_tx_can_proceed(nn, &sc, &error));
|
||||
if (!ret && error)
|
||||
ret = error;
|
||||
wait_event(nn->nn_sc_wq, o2net_tx_can_proceed(nn, &sc, &ret));
|
||||
if (ret)
|
||||
goto out;
|
||||
|
||||
|
Reference in New Issue
Block a user