On Sun, Nov 01, 2020 at 10:06:04PM +0000, Matthew Wilcox wrote: > On Sun, Nov 01, 2020 at 01:43:13PM -0800, Joe Perches wrote: > > > Why did you change this? > > > > Are you asking about the function argument alignment or the commit message? > > The indentation. Don't change the fucking indentation, Joe. > > > > Look, this isn't performance sensitive code. Just do something simple. > > > > > > if (shmem_huge == values[i]) > > > buf += sysfs_emit(buf, "[%s]", > > > shmem_format_huge(values[i])); > > > else > > > buf += sysfs_emit(buf, "%s", > > > shmem_format_huge(values[i])); > > > if (i == ARRAY_SIZE(values) - 1) > > > buf += sysfs_emit(buf, "\n"); > > > else > > > buf += sysfs_emit(buf, " "); > > > > > > Shame there's no sysfs_emitc, but there you go. > > > > I think what's there is simple. > > Again, you're wrong. > > > And your suggested code doesn't work. > > sysfs_emit is used for single emits. > > sysfs_emit_at is used for multiple emits. > > Oh, ugh, sysfs_emit() should be able to work on a buffer that isn't > page aligned. Greg, how about this? How can sysfs_emit() be called on a non-page-aligned buffer? It's being used on the buffer that was passed to the sysfs call. And if you are writing multiple values to a single sysfs file output, well, not good... > > +++ b/fs/sysfs/file.c > @@ -722,13 +722,13 @@ int sysfs_emit(char *buf, const char *fmt, ...) > { > va_list args; > int len; > + int start = offset_in_page(buf); > > - if (WARN(!buf || offset_in_page(buf), > - "invalid sysfs_emit: buf:%p\n", buf)) > + if (WARN(!buf, "invalid sysfs_emit: buf:%p\n", buf)) > return 0; > > va_start(args, fmt); > - len = vscnprintf(buf, PAGE_SIZE, fmt, args); > + len = vscnprintf(buf, PAGE_SIZE - start, fmt, args); That's a bit too 'tricky' for my taste, why is it somehow needed? thanks, greg k-h