• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-WNDR4500-V1.0.1.40_1.0.68/src/linux/linux-2.6/fs/hfsplus_journal/

Lines Matching refs:bh

29 static void hfsplus_jbd_end_buffer_io_sync(struct buffer_head *bh, int uptodate)
31 HFSPLUS_BUFFER_TRACE(bh, "");
33 set_buffer_uptodate(bh);
35 clear_buffer_uptodate(bh);
36 unlock_buffer(bh);
53 static void release_buffer_page(struct buffer_head *bh)
57 if (buffer_dirty(bh))
59 if (atomic_read(&bh->b_count) != 1)
61 page = bh->b_page;
72 __brelse(bh);
79 __brelse(bh);
87 static int inverted_lock(hfsplus_jbd_t *journal, struct buffer_head *bh)
89 if (!hfsplus_jbd_trylock_bh_state(bh)) {
108 struct buffer_head *bh;
124 bh = hfsplus_jh2bh(descriptor);
127 for (i = 0; i < bh->b_size; i += 512) {
128 hfsplus_jbd_header_t *tmp = (hfsplus_jbd_header_t*)bh->b_data;
135 set_buffer_dirty(bh);
137 set_buffer_ordered(bh);
140 ret = sync_dirty_buffer(bh);
158 clear_buffer_ordered(bh);
159 set_buffer_uptodate(bh);
160 set_buffer_dirty(bh);
161 ret = sync_dirty_buffer(bh);
163 put_bh(bh); /* One for getblk() */
289 struct buffer_head *bh = hfsplus_jh2bh(jh);
291 hfsplus_jbd_lock_bh_state(bh);
294 hfsplus_jbd_unlock_bh_state(bh);
361 struct buffer_head *bh;
365 bh = hfsplus_jh2bh(jh);
366 if (buffer_locked(bh)) {
367 HFSPLUS_BUFFER_TRACE(bh, "locked");
368 if (!inverted_lock(journal, bh))
373 hfsplus_jbd_unlock_bh_state(bh);
379 if (buffer_dirty(bh)) {
380 HFSPLUS_BUFFER_TRACE(bh, "start journal writeout");
381 get_bh(bh);
382 wbuf[bufs++] = bh;
392 HFSPLUS_BUFFER_TRACE(bh, "writeout complete: unfile");
393 if (!inverted_lock(journal, bh))
396 hfsplus_jbd_unlock_bh_state(bh);
397 hfsplus_jbd_remove_journal_head(bh);
398 put_bh(bh);
418 struct buffer_head *bh;
421 bh = hfsplus_jh2bh(jh);
422 get_bh(bh);
423 if (buffer_locked(bh)) {
425 wait_on_buffer(bh);
426 if (unlikely(!buffer_uptodate(bh)))
430 if (!inverted_lock(journal, bh)) {
431 put_bh(bh);
435 if (buffer_hfsplus_jbd(bh) && jh->b_jlist == HFSPLUS_BJ_Locked) {
437 hfsplus_jbd_unlock_bh_state(bh);
438 hfsplus_jbd_remove_journal_head(bh);
439 put_bh(bh);
441 hfsplus_jbd_unlock_bh_state(bh);
443 put_bh(bh);
503 struct buffer_head *bh;
515 bh = hfsplus_jh2bh(descriptor);
516 dprint(DBG_JCOMMIT, "JBD: got buffer %llu (%p)\n", (unsigned long long)bh->b_blocknr, bh->b_data);
519 blhdr = (hfsplus_blhdr_t *)bh->b_data;
526 header = (hfsplus_jbd_header_t *)&bh->b_data[0];
531 tagp = &bh->b_data[sizeof(hfsplus_jbd_header_t)];
532 space_left = bh->b_size - sizeof(hfsplus_jbd_header_t);
535 set_buffer_hfsplus_jbd_jwrite(bh);
536 set_buffer_dirty(bh);
537 wbuf[bufs++] = bh;
541 HFSPLUS_BUFFER_TRACE(bh, "ph3: file as descriptor");
650 struct buffer_head *bh = wbuf[i];
651 lock_buffer(bh);
652 clear_buffer_dirty(bh);
653 set_buffer_uptodate(bh);
654 bh->b_end_io = hfsplus_jbd_end_buffer_io_sync;
655 submit_bh(WRITE, bh);
688 struct buffer_head *bh;
691 bh = hfsplus_jh2bh(jh);
692 if (buffer_locked(bh)) {
693 wait_on_buffer(bh);
699 if (unlikely(!buffer_uptodate(bh)))
702 clear_buffer_hfsplus_jbd_jwrite(bh);
711 HFSPLUS_BUFFER_TRACE(bh, "dumping temporary bh");
713 __brelse(bh);
714 HFSPLUS_J_ASSERT_BH(bh, atomic_read(&bh->b_count) == 0);
715 free_buffer_head(bh);
720 bh = hfsplus_jh2bh(jh);
721 clear_bit(BH_HFSPLUS_JWrite, &bh->b_state);
722 HFSPLUS_J_ASSERT_BH(bh, buffer_hfsplus_jbddirty(bh));
732 wake_up_bit(&bh->b_state, BH_HFSPLUS_Unshadow);
734 __brelse(bh);
744 struct buffer_head *bh;
747 bh = hfsplus_jh2bh(jh);
748 if (buffer_locked(bh)) {
749 wait_on_buffer(bh);
755 if (unlikely(!buffer_uptodate(bh)))
758 HFSPLUS_BUFFER_TRACE(bh, "ph5: control buffer writeout done: unfile");
759 clear_buffer_hfsplus_jbd_jwrite(bh);
762 __brelse(bh); /* One for getblk */
796 struct buffer_head *bh;
800 bh = hfsplus_jh2bh(jh);
801 hfsplus_jbd_lock_bh_state(bh);
848 if (buffer_hfsplus_jbd_freed(bh)) {
849 clear_buffer_hfsplus_jbd_freed(bh);
850 clear_buffer_hfsplus_jbddirty(bh);
853 if (buffer_hfsplus_jbddirty(bh)) {
858 hfsplus_jbd_unlock_bh_state(bh);
860 HFSPLUS_J_ASSERT_BH(bh, !buffer_dirty(bh));
863 hfsplus_jbd_unlock_bh_state(bh);
864 hfsplus_jbd_remove_journal_head(bh); /* needs a brelse */
865 release_buffer_page(bh);