The advice to turn off SU+J for SSDs came in with the original commit 50de5d07d3c5625ba5666da213fbb67be77f380d without justification. I suspect this was based on some decades-old impression about the way SSDs operate combined with early concerns about the state of SU+J, neither of which are applicable now.
Diff Detail
- Lint
Lint Skipped - Unit
Tests Skipped
Event Timeline
I think there are two times three questions here:
A) is SU+J beneficial under normal circumstances
B) is SU+J beneficial under abnormal circumstances
I also think that we will want to nuance the discussion on three different grades of SSD:
- Camera-grade, which includes SD, micro-SD etc. (The FAL has too few open write blocks.)
- Consumer grade SSD (Sloppy handling of marginal situations, like brownout.)
- Enterprise grade SSD (The expensive stuff)
wrt A)
I almost never have grade 1 filesystems mounted R/W, so ENODATA.
I can honestly say that I have never seen /any/ benefits from using SU+J on grade 2+3 SSDs.
I have not tried to find out if there were a write-endurance difference. Few people would care if there are.
wrt B)
Again: No data for grade 1.
The time SU+J saves in fsck is not of any relevant magnitude on grade 2+3.
I see clear evidence that grade 2 SSDs do not guarantee write sequencing in abnormal situations, in particular loss of power and brownout.
I do not have solid data, but it seems to me that SU+J more often forces a full fsck than SU does.
But a full fsck takes only slightly longer on SSD's than a "preen" fsck.
So from my chair:
For grade 1 there may be relevant differences, which we should have guidance about, but I have no data.
For grade 2+3 it looks like a wash, but Somebody™ should measure if write-endurance is a relevant factor.
I largely agree with phk's analysis. SU+J does more writing than just SU (the extra writes being the journal data). Fsck runs very quickly on SSDs since random seeks do not slow it down as they do spinning rust. It would be worthwhile to run a timing test of fsck -p on a large SSD to see if it takes more than say 30 seconds but my guess is that it will not.