aboutsummaryrefslogtreecommitdiffstats
path: root/fs/configfs/file.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2015-11-13 23:04:17 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2015-11-13 23:04:17 -0500
commit9aa3d651a9199103eb6451aeb0ac1b66a6d770a6 (patch)
tree42cc631c54e1fcbdeedee8e955c4797634a91af7 /fs/configfs/file.c
parent5d2eb548b309be34ecf3b91f0b7300a2b9d09b8c (diff)
parent517982229f78b2aebf00a8a337e84e8eeea70b8e (diff)
Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending
Pull SCSI target updates from Nicholas Bellinger: "This series contains HCH's changes to absorb configfs attribute ->show() + ->store() function pointer usage from it's original tree-wide consumers, into common configfs code. It includes usb-gadget, target w/ drivers, netconsole and ocfs2 changes to realize the improved simplicity, that now renders the original include/target/configfs_macros.h CPP magic for fabric drivers and others, unnecessary and obsolete. And with common code in place, new configfs attributes can be added easier than ever before. Note, there are further improvements in-flight from other folks for v4.5 code in configfs land, plus number of target fixes for post -rc1 code" In the meantime, a new user of the now-removed old configfs API came in through the char/misc tree in commit 7bd1d4093c2f ("stm class: Introduce an abstraction for System Trace Module devices"). This merge resolution comes from Alexander Shishkin, who updated his stm class tracing abstraction to account for the removal of the old show_attribute and store_attribute methods in commit 517982229f78 ("configfs: remove old API") from this pull. As Alexander says about that patch: "There's no need to keep an extra wrapper structure per item and the awkward show_attribute/store_attribute item ops are no longer needed. This patch converts policy code to the new api, all the while making the code quite a bit smaller and easier on the eyes. Signed-off-by: Alexander Shishkin <alexander.shishkin@linux.intel.com>" That patch was folded into the merge so that the tree should be fully bisectable. * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (23 commits) configfs: remove old API ocfs2/cluster: use per-attribute show and store methods ocfs2/cluster: move locking into attribute store methods netconsole: use per-attribute show and store methods target: use per-attribute show and store methods spear13xx_pcie_gadget: use per-attribute show and store methods dlm: use per-attribute show and store methods usb-gadget/f_serial: use per-attribute show and store methods usb-gadget/f_phonet: use per-attribute show and store methods usb-gadget/f_obex: use per-attribute show and store methods usb-gadget/f_uac2: use per-attribute show and store methods usb-gadget/f_uac1: use per-attribute show and store methods usb-gadget/f_mass_storage: use per-attribute show and store methods usb-gadget/f_sourcesink: use per-attribute show and store methods usb-gadget/f_printer: use per-attribute show and store methods usb-gadget/f_midi: use per-attribute show and store methods usb-gadget/f_loopback: use per-attribute show and store methods usb-gadget/ether: use per-attribute show and store methods usb-gadget/f_acm: use per-attribute show and store methods usb-gadget/f_hid: use per-attribute show and store methods ...
Diffstat (limited to 'fs/configfs/file.c')
-rw-r--r--fs/configfs/file.c12
1 files changed, 5 insertions, 7 deletions
diff --git a/fs/configfs/file.c b/fs/configfs/file.c
index 403269ffcdf3..d39099ea7df7 100644
--- a/fs/configfs/file.c
+++ b/fs/configfs/file.c
@@ -65,7 +65,6 @@ static int fill_read_buffer(struct dentry * dentry, struct configfs_buffer * buf
65{ 65{
66 struct configfs_attribute * attr = to_attr(dentry); 66 struct configfs_attribute * attr = to_attr(dentry);
67 struct config_item * item = to_item(dentry->d_parent); 67 struct config_item * item = to_item(dentry->d_parent);
68 struct configfs_item_operations * ops = buffer->ops;
69 int ret = 0; 68 int ret = 0;
70 ssize_t count; 69 ssize_t count;
71 70
@@ -74,7 +73,8 @@ static int fill_read_buffer(struct dentry * dentry, struct configfs_buffer * buf
74 if (!buffer->page) 73 if (!buffer->page)
75 return -ENOMEM; 74 return -ENOMEM;
76 75
77 count = ops->show_attribute(item,attr,buffer->page); 76 count = attr->show(item, buffer->page);
77
78 buffer->needs_read_fill = 0; 78 buffer->needs_read_fill = 0;
79 BUG_ON(count > (ssize_t)SIMPLE_ATTR_SIZE); 79 BUG_ON(count > (ssize_t)SIMPLE_ATTR_SIZE);
80 if (count >= 0) 80 if (count >= 0)
@@ -171,9 +171,8 @@ flush_write_buffer(struct dentry * dentry, struct configfs_buffer * buffer, size
171{ 171{
172 struct configfs_attribute * attr = to_attr(dentry); 172 struct configfs_attribute * attr = to_attr(dentry);
173 struct config_item * item = to_item(dentry->d_parent); 173 struct config_item * item = to_item(dentry->d_parent);
174 struct configfs_item_operations * ops = buffer->ops;
175 174
176 return ops->store_attribute(item,attr,buffer->page,count); 175 return attr->store(item, buffer->page, count);
177} 176}
178 177
179 178
@@ -237,8 +236,7 @@ static int check_perm(struct inode * inode, struct file * file)
237 * and we must have a store method. 236 * and we must have a store method.
238 */ 237 */
239 if (file->f_mode & FMODE_WRITE) { 238 if (file->f_mode & FMODE_WRITE) {
240 239 if (!(inode->i_mode & S_IWUGO) || !attr->store)
241 if (!(inode->i_mode & S_IWUGO) || !ops->store_attribute)
242 goto Eaccess; 240 goto Eaccess;
243 241
244 } 242 }
@@ -248,7 +246,7 @@ static int check_perm(struct inode * inode, struct file * file)
248 * must be a show method for it. 246 * must be a show method for it.
249 */ 247 */
250 if (file->f_mode & FMODE_READ) { 248 if (file->f_mode & FMODE_READ) {
251 if (!(inode->i_mode & S_IRUGO) || !ops->show_attribute) 249 if (!(inode->i_mode & S_IRUGO) || !attr->show)
252 goto Eaccess; 250 goto Eaccess;
253 } 251 }
254 252