,   ,     
  ,       -
,      -.

 b_count     .    -
    ,     <linux/
buffer_head.h>  .

static inline void get_bh(struct buffer head *bh)
{

atomic_inc(&bh->b count);

)

static inline void put_bh(struct buffer head *bh)

{

atomic dec(&bh->b count);

}

     ,   -
      get_bh (),  , 
      .      -
,        
put_bh().

    ,   ,   
   b_blocknr,     
b bdev.

  ,     , 
  b_page.  b_data        (-
  -    b_page),     
b_size. ,    ,    b_data  -
  (b_data + b_size).

          -
      (..  ,  -
    ).    
-      .

    2.6       
.  ,    -   .   
     --  -
,         -.  -
   .     ,   -
       (   
 ),   ,    -  
       .  ,
     ,      
  .    ,
   (      -
),  .        2.6    ,
        
   ,    .   
    15, "     ", 
   address_space   pdflush.

  - 297