|  | A laundry list of things that need looking at, most of which will | 
|  | require more work than the average checkpatch cleanup... | 
|  |  | 
|  | Note that some of these entries may not be bugs - they're things | 
|  | that need to be looked at, and *possibly* fixed. | 
|  |  | 
|  | Clean up the ffsCamelCase function names. | 
|  |  | 
|  | Fix (thing)->flags to not use magic numbers - multiple offenders | 
|  |  | 
|  | Sort out all the s32/u32/u8 nonsense - most of these should be plain int. | 
|  |  | 
|  | exfat_core.c - ffsReadFile - the goto err_out seem to leak a brelse(). | 
|  | same for ffsWriteFile. | 
|  |  | 
|  | All the calls to fs_sync() need to be looked at, particularly in the | 
|  | context of EXFAT_DELAYED_SYNC. Currently, if that's defined, we only | 
|  | flush to disk when sync() gets called.  We should be doing at least | 
|  | metadata flushes at appropriate times. | 
|  |  | 
|  | ffsTruncateFile -  if (old_size <= new_size) { | 
|  | That doesn't look right. How did it ever work? Are they relying on lazy | 
|  | block allocation when actual writes happen? If nothing else, it never | 
|  | does the 'fid->size = new_size' and do the inode update.... | 
|  |  | 
|  | ffsSetAttr() is just dangling in the breeze, not wired up at all... | 
|  |  | 
|  | Convert global mutexes to a per-superblock mutex. | 
|  |  | 
|  | Right now, we load exactly one UTF-8 table. Check to see | 
|  | if that plays nice with different codepage and iocharset values | 
|  | for simultanous mounts of different devices | 
|  |  | 
|  | exfat_rmdir() checks for -EBUSY but ffsRemoveDir() doesn't return it. | 
|  | In fact, there's a complete lack of -EBUSY testing anywhere. | 
|  |  | 
|  | There's probably a few missing checks for -EEXIST | 
|  |  | 
|  | check return codes of sync_dirty_buffer() | 
|  |  | 
|  | Why is remove_file doing a num_entries++?? | 
|  |  | 
|  | Double check a lot of can't-happen parameter checks (for null pointers for | 
|  | things that have only one call site and can't pass a null, etc). | 
|  |  | 
|  | All the DEBUG stuff can probably be tossed, including the ioctl(). Either | 
|  | that, or convert to a proper fault-injection system. | 
|  |  | 
|  | exfat_remount does exactly one thing.  Fix to actually deal with remount | 
|  | options, particularly handling R/O correctly.  For that matter, allow | 
|  | R/O mounts in the first place. | 
|  |  | 
|  | Figure out why the VFAT code used multi_sector_(read|write) but the | 
|  | exfat code doesn't use it. The difference matters on SSDs with wear leveling. | 
|  |  | 
|  | exfat_fat_sync(), exfat_buf_sync(), and sync_alloc_bitmap() | 
|  | aren't called anyplace.... | 
|  |  | 
|  | Create helper function for exfat_set_entry_time() and exfat_set_entry_type() | 
|  | because it's sort of ugly to be calling the same functionn directly and | 
|  | other code calling through the fs_func struc ponters... | 
|  |  | 
|  | clean up the remaining vol_type checks, which are of two types: | 
|  | some are ?: operators with magic numbers, and the rest are places | 
|  | where we're doing stuff with '.' and '..'. | 
|  |  | 
|  | Patches to: | 
|  | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 
|  | Valdis Kletnieks <valdis.kletnieks@vt.edu> |