7 -20 Egregious violation of style versus design document example
8 -10 Numerous excessively long lines (> 79 characters)
9 -10 Numerous capitalization, punctuation, spelling, or grammar errors
12 -10 Failure to check return value of malloc()
13 -10 Use of ASSERT to check something that can actually fail, e.g. malloc()
16 -10 Inconsistent or bad coding style: no indentation, cramming
17 many statements into one line, other issues at TA's discretion
18 -10 Numerous very long source code lines (> 100 characters)
19 -10 Commented-out or #if'd out code makes real code hard to read
20 -10 Many missing comments on structure, structure members,
21 global or static variables, or function definitions
22 -10 Function(s) should be decomposed for clarity [indicate function]
23 -10 Cut-and-pasted code should be made into function [indicate where]
24 -10 Uninformative or deceptive identifiers
26 Subtotal: /10 (not capped)
28 PROBLEM 1: INDEX AND EXTENSIBLE FILES
31 -30 Grossly inaccurate: documentation has no resemblance to code
32 -15 Important inaccuracies: documentation and code differ significantly
34 -5 Minor inaccuracies: documentation and code differ [indicate how]
35 -5 A1: Missing entirely/missing comments or purpose/too long
36 -1 A1: "start" member retained in inode_disk but not used
37 -2 A1: "unused" array in inode_disk should be used for block pointers
38 -5 A2: Missing/non-responsive/too long/too short
39 -2 A2: Didn't show work or provide enough information to reproduce
40 -2 A2: Math doesn't add up
41 -3 A2: Incorrect claim to have 128 indirect or doubly indirect blocks
42 -5 A3: Missing/non-responsive/too long/too short
43 -5 A4: Missing/non-responsive/too long/too short
44 -5 A5: Missing/non-responsive/too long/too short
45 +1 A5: Mentioned that locks and semaphores are FIFO ordered.
46 -3 A5: Didn't describe one of two rules needed for fairness
47 -5 A5: Didn't describe either of two rules needed for fairness
48 -2 A5: Use of timer to ensure fairness
49 -2 A5: Claim that "rare" events do not affect fairness
50 -5 A6: Missing/non-responsive/too long/too short
51 -3 A6: Mentioned only one reason
55 -5 Global lock for file extension
56 -5 Check on file length followed by obtaining lock fails to recheck length
57 -15 Reads or writes wait for one another, even when file not being extended
59 Subtotal: /30 (capped at 0)
61 PROBLEM 2: SUBDIRECTORIES
64 -30 Grossly inaccurate: documentation has no resemblance to code
65 -15 Important inaccuracies: documentation and code differ significantly
67 -5 Minor inaccuracies: documentation and code differ [indicate how]
68 -5 B1: Missing entirely/missing comments or purpose/too long
69 -1 B1: Not mentioned how files and directories are distinguished
70 -2 B1: Global list of open directories lacks lock
71 -2 B1: Global list of directories has no way to wait for directory access
72 -5 B2: Missing/non-responsive/too long/too short
73 -5 B3: Missing/non-responsive/too long/too short
74 -5 B4: Missing/non-responsive/too long/too short
75 -5 B5: Missing/non-responsive/too long/too short
76 -3 B5: Claim that extra code is needed to avoid deleting parents of cwds
77 -5 B6: Missing/non-responsive/too long/too short
78 -3 B6: Mentioned only one reason
82 -10 Use of string for current directory is slow, takes a lot of
83 memory, and has undesirable semantics for directory removed
85 -5 Use of sector number for current directory has bad semantics
86 when a directory's inode is reused later
87 -10 Operations on different directories must wait for one another
89 Subtotal: /30 (capped at 0)
91 PROBLEM 3: BUFFER CACHE
94 -30 Grossly inaccurate: documentation has no resemblance to code
95 -15 Important inaccuracies: documentation and code differ significantly
97 -5 Minor inaccuracies: documentation and code differ [indicate how]
98 -5 C1: Missing entirely/missing comments or purpose/too long
99 -2 C1: Didn't drop inode_disk from struct inode
100 -5 C2: Missing/non-responsive/too long/too short
101 -5 C3: Missing/non-responsive/too long/too short
102 -5 C4: Missing/non-responsive/too long/too short
103 -5 C5: Missing/non-responsive/too long/too short
104 -5 C6: Missing/non-responsive/too long/too short
105 -2 C6: Omitted one of three workloads
106 -4 C6: Omitted two of three workloads
110 -3 Modifies all cache entries on block access or eviction
111 -10 Metadata are preferred over data to the extent that the cache
112 will contain only metadata in many cases
113 -5 Busy waits in read-ahead
114 -5 Creates new thread on most reads or on every read
115 -5 In some cases operations on cached blocks may have to wait for
116 I/O of unrelated blocks to complete
118 Subtotal: /30 (capped at 0)