[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#7362: dd strangeness
From: |
Pádraig Brady |
Subject: |
bug#7362: dd strangeness |
Date: |
Wed, 02 Mar 2011 23:29:23 +0000 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.8) Gecko/20100227 Thunderbird/3.0.3 |
On 02/03/11 17:55, Paul Eggert wrote:
> On 03/02/2011 04:53 AM, Pádraig Brady wrote:
>> + /* Enable 'fullblock' with 'direct' or 'cio' as we don't want to
>> + write partial blocks to output, which would disable O_DIRECT. An
>> + alternative would be to enable C_TWOBUFS to accumulate full output
>> + blocks. However that wouldn't work when a count is specified, and
>> + is also less efficient. */
>> + if (output_flags & (O_DIRECT | O_CIO))
>> + input_flags |= O_FULLBLOCK;
>
> I'm afraid this patch feels wrong somehow. It's conflating four
> issues: counting, efficiency, disabling O_DIRECT, and disabling O_CIO.
> Some thoughts:
>
> 1. Offhand I don't see why O_CIO has anything to do with blocking;
> why is it mentioned here?
>
> 2. If C_TWOBUFS is already in effect, then dd needn't set
> O_FULLBLOCK, since C_TWOBUFS already prevents the disabling of
> O_DIRECT.
>
> 3. The counting issue is independent of oflag=direct or oflag=cio:
> any solution for counting should work regardless of oflag settings.
>
> The more I think about it, the more I suspect that this
> O_FULLBLOCK-inferring code should be omitted. It adds little benefit, as
> it covers a rare combination of flags that is likely to be used only
> by experts, who should know the gotchas in this area anyway. And the
> extra complexity in documentation will penalize everybody who reads
> it, even the non-experts.
Hmm I actually thought of something that may be better.
The O_DIRECT -> normal switch done in iwrite() for the
last write, should only happen once.
If it happens more than that, we can print a warning,
suggesting the use of iflag=fullblock.
cheers,
Pádraig.
- bug#7362: dd strangeness, (continued)
- bug#7362: dd strangeness, Paul Eggert, 2011/03/01
- bug#7362: dd strangeness, Pádraig Brady, 2011/03/02
- bug#7362: dd strangeness, Paul Eggert, 2011/03/04
- bug#7362: dd strangeness, Pádraig Brady, 2011/03/04
- bug#7362: dd strangeness, Paul Eggert, 2011/03/04
- bug#7362: dd strangeness, Pádraig Brady, 2011/03/04
- bug#7362: dd strangeness, Pádraig Brady, 2011/03/01
- bug#7362: dd strangeness, Pádraig Brady, 2011/03/02
- bug#7362: dd strangeness, Jim Meyering, 2011/03/02
- bug#7362: dd strangeness, Paul Eggert, 2011/03/02
- bug#7362: dd strangeness,
Pádraig Brady <=
- bug#7362: dd strangeness, Paul Eggert, 2011/03/02
- bug#7362: dd strangeness, Pádraig Brady, 2011/03/04
- bug#7362: dd strangeness, Paul Eggert, 2011/03/04
- bug#7362: dd strangeness, Paul Eggert, 2011/03/05
- bug#7362: dd strangeness, Pádraig Brady, 2011/03/05
- bug#7362: dd strangeness, Pádraig Brady, 2011/03/02