sci 41 drivers/clk/keystone/sci-clk.c const struct ti_sci_handle *sci; sci 83 drivers/clk/keystone/sci-clk.c return clk->provider->ops->get_clock(clk->provider->sci, clk->dev_id, sci 100 drivers/clk/keystone/sci-clk.c ret = clk->provider->ops->put_clock(clk->provider->sci, clk->dev_id, sci 121 drivers/clk/keystone/sci-clk.c ret = clk->provider->ops->is_on(clk->provider->sci, clk->dev_id, sci 149 drivers/clk/keystone/sci-clk.c ret = clk->provider->ops->get_freq(clk->provider->sci, clk->dev_id, sci 178 drivers/clk/keystone/sci-clk.c ret = clk->provider->ops->get_best_match_freq(clk->provider->sci, sci 211 drivers/clk/keystone/sci-clk.c return clk->provider->ops->set_freq(clk->provider->sci, clk->dev_id, sci 227 drivers/clk/keystone/sci-clk.c ret = clk->provider->ops->get_parent(clk->provider->sci, clk->dev_id, sci 252 drivers/clk/keystone/sci-clk.c return clk->provider->ops->set_parent(clk->provider->sci, clk->dev_id, sci 427 drivers/clk/keystone/sci-clk.c ret = provider->ops->get_num_parents(provider->sci, dev_id, sci 549 drivers/clk/keystone/sci-clk.c provider->ops->get_num_parents(provider->sci, sci 650 drivers/clk/keystone/sci-clk.c provider->sci = handle; sci 310 drivers/crypto/caam/pdb.h u64 sci; sci 323 drivers/crypto/caam/pdb.h u64 sci; sci 5807 drivers/infiniband/hw/hfi1/chip.c struct send_context_info *sci; sci 5811 drivers/infiniband/hw/hfi1/chip.c sci = &dd->send_contexts[sw_index]; sci 5814 drivers/infiniband/hw/hfi1/chip.c if ((sci->type != SC_KERNEL) && (sci->type != SC_VL15)) sci 5817 drivers/infiniband/hw/hfi1/chip.c sc = sci->sc; sci 5971 drivers/infiniband/hw/hfi1/chip.c struct send_context_info *sci; sci 5986 drivers/infiniband/hw/hfi1/chip.c sci = &dd->send_contexts[sw_index]; sci 5988 drivers/infiniband/hw/hfi1/chip.c sc = sci->sc; sci 441 drivers/infiniband/hw/hfi1/debugfs.c struct send_context_info *sci; sci 447 drivers/infiniband/hw/hfi1/debugfs.c sci = &dd->send_contexts[i]; sci 448 drivers/infiniband/hw/hfi1/debugfs.c if (sci && sci->type != SC_USER && sci->allocated && sci->sc) sci 449 drivers/infiniband/hw/hfi1/debugfs.c seqfile_dump_sci(s, i, sci); sci 476 drivers/infiniband/hw/hfi1/pio.c struct send_context_info *sci = sci 478 drivers/infiniband/hw/hfi1/pio.c sci->type = i; sci 479 drivers/infiniband/hw/hfi1/pio.c sci->base = base; sci 480 drivers/infiniband/hw/hfi1/pio.c sci->credits = scs->size; sci 498 drivers/infiniband/hw/hfi1/pio.c struct send_context_info *sci; sci 502 drivers/infiniband/hw/hfi1/pio.c for (index = 0, sci = &dd->send_contexts[0]; sci 503 drivers/infiniband/hw/hfi1/pio.c index < dd->num_send_contexts; index++, sci++) { sci 504 drivers/infiniband/hw/hfi1/pio.c if (sci->type == type && sci->allocated == 0) { sci 505 drivers/infiniband/hw/hfi1/pio.c sci->allocated = 1; sci 525 drivers/infiniband/hw/hfi1/pio.c struct send_context_info *sci; sci 527 drivers/infiniband/hw/hfi1/pio.c sci = &dd->send_contexts[sw_index]; sci 528 drivers/infiniband/hw/hfi1/pio.c if (!sci->allocated) { sci 532 drivers/infiniband/hw/hfi1/pio.c sci->allocated = 0; sci 699 drivers/infiniband/hw/hfi1/pio.c struct send_context_info *sci; sci 736 drivers/infiniband/hw/hfi1/pio.c sci = &dd->send_contexts[sw_index]; sci 737 drivers/infiniband/hw/hfi1/pio.c sci->sc = sc; sci 756 drivers/infiniband/hw/hfi1/pio.c sc->credits = sci->credits; sci 766 drivers/infiniband/hw/hfi1/pio.c reg = ((sci->credits & SC(CTRL_CTXT_DEPTH_MASK)) sci 768 drivers/infiniband/hw/hfi1/pio.c | ((sci->base & SC(CTRL_CTXT_BASE_MASK)) sci 854 drivers/infiniband/hw/hfi1/pio.c sc->sr_size = sci->credits + 1; sci 2162 drivers/infiniband/hw/hfi1/pio.c struct send_context_info *sci) sci 2164 drivers/infiniband/hw/hfi1/pio.c struct send_context *sc = sci->sc; sci 2168 drivers/infiniband/hw/hfi1/pio.c i, sci->type, sci->base, sci->credits); sci 335 drivers/infiniband/hw/hfi1/pio.h struct send_context_info *sci); sci 88 drivers/irqchip/irq-ti-sci-inta.c const struct ti_sci_handle *sci; sci 203 drivers/irqchip/irq-ti-sci-inta.c err = inta->sci->ops.rm_irq_ops.set_event_map(inta->sci, sci 298 drivers/irqchip/irq-ti-sci-inta.c inta->sci->ops.rm_irq_ops.free_event_map(inta->sci, sci 542 drivers/irqchip/irq-ti-sci-inta.c inta->sci = devm_ti_sci_get_by_phandle(dev, "ti,sci"); sci 543 drivers/irqchip/irq-ti-sci-inta.c if (IS_ERR(inta->sci)) { sci 544 drivers/irqchip/irq-ti-sci-inta.c ret = PTR_ERR(inta->sci); sci 547 drivers/irqchip/irq-ti-sci-inta.c inta->sci = NULL; sci 557 drivers/irqchip/irq-ti-sci-inta.c inta->vint = devm_ti_sci_get_of_resource(inta->sci, dev, pdev->id, sci 564 drivers/irqchip/irq-ti-sci-inta.c inta->global_event = devm_ti_sci_get_of_resource(inta->sci, dev, pdev->id, sci 40 drivers/irqchip/irq-ti-sci-intr.c const struct ti_sci_handle *sci; sci 100 drivers/irqchip/irq-ti-sci-intr.c intr->sci->ops.rm_irq_ops.free_irq(intr->sci, dev_id, irq_index, sci 141 drivers/irqchip/irq-ti-sci-intr.c err = intr->sci->ops.rm_irq_ops.set_irq(intr->sci, dev_id, irq_index, sci 224 drivers/irqchip/irq-ti-sci-intr.c intr->sci = devm_ti_sci_get_by_phandle(dev, "ti,sci"); sci 225 drivers/irqchip/irq-ti-sci-intr.c if (IS_ERR(intr->sci)) { sci 226 drivers/irqchip/irq-ti-sci-intr.c ret = PTR_ERR(intr->sci); sci 229 drivers/irqchip/irq-ti-sci-intr.c intr->sci = NULL; sci 240 drivers/irqchip/irq-ti-sci-intr.c intr->dst_irq = devm_ti_sci_get_of_resource(intr->sci, dev, sci 76 drivers/net/macsec.c sci_t sci; sci 168 drivers/net/macsec.c sci_t sci; sci 241 drivers/net/macsec.c sci_t sci; sci 410 drivers/net/macsec.c sci_t sci; sci 412 drivers/net/macsec.c memcpy(&sci, addr, ETH_ALEN); sci 413 drivers/net/macsec.c memcpy(((char *)&sci) + ETH_ALEN, &port, sizeof(port)); sci 415 drivers/net/macsec.c return sci; sci 420 drivers/net/macsec.c sci_t sci; sci 423 drivers/net/macsec.c memcpy(&sci, hdr->secure_channel_id, sci 426 drivers/net/macsec.c sci = make_sci(hdr->eth.h_source, MACSEC_PORT_ES); sci 428 drivers/net/macsec.c return sci; sci 458 drivers/net/macsec.c memcpy(&h->secure_channel_id, &secy->sci, sci 523 drivers/net/macsec.c static void macsec_fill_iv(unsigned char *iv, sci_t sci, u32 pn) sci 527 drivers/net/macsec.c gcm_iv->sci = sci; sci 740 drivers/net/macsec.c macsec_fill_iv(iv, secy->sci, pn); sci 926 drivers/net/macsec.c sci_t sci, sci 954 drivers/net/macsec.c macsec_fill_iv(iv, sci, ntohl(hdr->packet_number)); sci 1009 drivers/net/macsec.c static struct macsec_rx_sc *find_rx_sc(struct macsec_secy *secy, sci_t sci) sci 1014 drivers/net/macsec.c if (rx_sc->sci == sci) sci 1021 drivers/net/macsec.c static struct macsec_rx_sc *find_rx_sc_rtnl(struct macsec_secy *secy, sci_t sci) sci 1026 drivers/net/macsec.c if (rx_sc->sci == sci) sci 1083 drivers/net/macsec.c sci_t sci; sci 1134 drivers/net/macsec.c sci = macsec_frame_sci(hdr, macsec_skb_cb(skb)->has_sci); sci 1140 drivers/net/macsec.c struct macsec_rx_sc *sc = find_rx_sc(&macsec->secy, sci); sci 1213 drivers/net/macsec.c skb = macsec_decrypt(skb, dev, rx_sa, sci, secy); sci 1375 drivers/net/macsec.c static struct macsec_rx_sc *del_rx_sc(struct macsec_secy *secy, sci_t sci) sci 1382 drivers/net/macsec.c if (rx_sc->sci == sci) { sci 1393 drivers/net/macsec.c static struct macsec_rx_sc *create_rx_sc(struct net_device *dev, sci_t sci) sci 1402 drivers/net/macsec.c if (find_rx_sc_rtnl(&macsec->secy, sci)) sci 1416 drivers/net/macsec.c rx_sc->sci = sci; sci 1533 drivers/net/macsec.c sci_t sci; sci 1544 drivers/net/macsec.c sci = nla_get_sci(tb_rxsc[MACSEC_RXSC_ATTR_SCI]); sci 1545 drivers/net/macsec.c rx_sc = find_rx_sc_rtnl(secy, sci); sci 1747 drivers/net/macsec.c sci_t sci = MACSEC_UNDEF_SCI; sci 1768 drivers/net/macsec.c sci = nla_get_sci(tb_rxsc[MACSEC_RXSC_ATTR_SCI]); sci 1770 drivers/net/macsec.c rx_sc = create_rx_sc(dev, sci); sci 1934 drivers/net/macsec.c sci_t sci; sci 1954 drivers/net/macsec.c sci = nla_get_sci(tb_rxsc[MACSEC_RXSC_ATTR_SCI]); sci 1956 drivers/net/macsec.c rx_sc = del_rx_sc(secy, sci); sci 2380 drivers/net/macsec.c if (nla_put_sci(skb, MACSEC_SECY_ATTR_SCI, secy->sci, sci 2510 drivers/net/macsec.c nla_put_sci(skb, MACSEC_RXSC_ATTR_SCI, rx_sc->sci, sci 2913 drivers/net/macsec.c macsec->secy.sci = dev_to_sci(dev, MACSEC_PORT_ES); sci 3175 drivers/net/macsec.c static bool sci_exists(struct net_device *dev, sci_t sci) sci 3181 drivers/net/macsec.c if (macsec->secy.sci == sci) sci 3188 drivers/net/macsec.c static int macsec_add_dev(struct net_device *dev, sci_t sci, u8 icv_len) sci 3203 drivers/net/macsec.c if (sci == MACSEC_UNDEF_SCI) sci 3204 drivers/net/macsec.c sci = dev_to_sci(dev, MACSEC_PORT_ES); sci 3214 drivers/net/macsec.c secy->sci = sci; sci 3234 drivers/net/macsec.c sci_t sci; sci 3272 drivers/net/macsec.c sci = nla_get_sci(data[IFLA_MACSEC_SCI]); sci 3274 drivers/net/macsec.c sci = dev_to_sci(dev, nla_get_be16(data[IFLA_MACSEC_PORT])); sci 3276 drivers/net/macsec.c sci = dev_to_sci(dev, MACSEC_PORT_ES); sci 3278 drivers/net/macsec.c if (rx_handler && sci_exists(real_dev, sci)) { sci 3283 drivers/net/macsec.c err = macsec_add_dev(dev, sci, icv_len); sci 3319 drivers/net/macsec.c bool es, scb, sci; sci 3369 drivers/net/macsec.c sci = data[IFLA_MACSEC_INC_SCI] ? nla_get_u8(data[IFLA_MACSEC_INC_SCI]) : false; sci 3372 drivers/net/macsec.c if ((sci && (scb || es)) || (scb && es)) sci 3427 drivers/net/macsec.c if (nla_put_sci(skb, IFLA_MACSEC_SCI, secy->sci, sci 611 drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c NPCM7XX_GRP(sci), \ sci 754 drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c NPCM7XX_SFUNC(sci); sci 872 drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c NPCM7XX_MKFUNC(sci), sci 1100 drivers/pinctrl/nuvoton/pinctrl-npcm7xx.c NPCM7XX_PINCFG(170, sci, MFSEL1, 22, none, NONE, 0, none, NONE, 0, 0), sci 47 drivers/reset/reset-ti-sci.c const struct ti_sci_handle *sci; sci 74 drivers/reset/reset-ti-sci.c const struct ti_sci_handle *sci = data->sci; sci 75 drivers/reset/reset-ti-sci.c const struct ti_sci_dev_ops *dev_ops = &sci->ops.dev_ops; sci 86 drivers/reset/reset-ti-sci.c ret = dev_ops->get_device_resets(sci, control->dev_id, &reset_state); sci 95 drivers/reset/reset-ti-sci.c ret = dev_ops->set_device_resets(sci, control->dev_id, reset_state); sci 155 drivers/reset/reset-ti-sci.c const struct ti_sci_handle *sci = data->sci; sci 156 drivers/reset/reset-ti-sci.c const struct ti_sci_dev_ops *dev_ops = &sci->ops.dev_ops; sci 165 drivers/reset/reset-ti-sci.c ret = dev_ops->get_device_resets(sci, control->dev_id, &reset_state); sci 229 drivers/reset/reset-ti-sci.c data->sci = devm_ti_sci_get_handle(&pdev->dev); sci 230 drivers/reset/reset-ti-sci.c if (IS_ERR(data->sci)) sci 231 drivers/reset/reset-ti-sci.c return PTR_ERR(data->sci); sci 928 drivers/spi/spi-s3c64xx.c struct s3c64xx_spi_info *sci = sdd->cntrlr_info; sci 934 drivers/spi/spi-s3c64xx.c if (sci->no_cs) sci 943 drivers/spi/spi-s3c64xx.c writel(sci->src_clk_nr << S3C64XX_SPI_CLKSEL_SRCSHFT, sci 970 drivers/spi/spi-s3c64xx.c struct s3c64xx_spi_info *sci; sci 973 drivers/spi/spi-s3c64xx.c sci = devm_kzalloc(dev, sizeof(*sci), GFP_KERNEL); sci 974 drivers/spi/spi-s3c64xx.c if (!sci) sci 979 drivers/spi/spi-s3c64xx.c sci->src_clk_nr = 0; sci 981 drivers/spi/spi-s3c64xx.c sci->src_clk_nr = temp; sci 986 drivers/spi/spi-s3c64xx.c sci->num_cs = 1; sci 988 drivers/spi/spi-s3c64xx.c sci->num_cs = temp; sci 991 drivers/spi/spi-s3c64xx.c sci->no_cs = of_property_read_bool(dev->of_node, "no-cs-readback"); sci 993 drivers/spi/spi-s3c64xx.c return sci; sci 1022 drivers/spi/spi-s3c64xx.c struct s3c64xx_spi_info *sci = dev_get_platdata(&pdev->dev); sci 1027 drivers/spi/spi-s3c64xx.c if (!sci && pdev->dev.of_node) { sci 1028 drivers/spi/spi-s3c64xx.c sci = s3c64xx_spi_parse_dt(&pdev->dev); sci 1029 drivers/spi/spi-s3c64xx.c if (IS_ERR(sci)) sci 1030 drivers/spi/spi-s3c64xx.c return PTR_ERR(sci); sci 1033 drivers/spi/spi-s3c64xx.c if (!sci) { sci 1062 drivers/spi/spi-s3c64xx.c sdd->cntrlr_info = sci; sci 1089 drivers/spi/spi-s3c64xx.c master->num_chipselect = sci->num_cs; sci 1105 drivers/spi/spi-s3c64xx.c if (sci->cfg_gpio && sci->cfg_gpio()) { sci 1125 drivers/spi/spi-s3c64xx.c sprintf(clk_name, "spi_busclk%d", sci->src_clk_nr); sci 1285 drivers/spi/spi-s3c64xx.c struct s3c64xx_spi_info *sci = sdd->cntrlr_info; sci 1288 drivers/spi/spi-s3c64xx.c if (sci->cfg_gpio) sci 1289 drivers/spi/spi-s3c64xx.c sci->cfg_gpio(); sci 1106 drivers/tty/serial/sh-sci.c struct sci_port *sci = to_sci_port(port); sci 1108 drivers/tty/serial/sh-sci.c return sprintf(buf, "%d\n", sci->rx_trigger); sci 1116 drivers/tty/serial/sh-sci.c struct sci_port *sci = to_sci_port(port); sci 1124 drivers/tty/serial/sh-sci.c sci->rx_trigger = scif_set_rtrg(port, r); sci 1138 drivers/tty/serial/sh-sci.c struct sci_port *sci = to_sci_port(port); sci 1142 drivers/tty/serial/sh-sci.c v = sci->hscif_tot >> HSSCR_TOT_SHIFT; sci 1144 drivers/tty/serial/sh-sci.c v = sci->rx_fifo_timeout; sci 1155 drivers/tty/serial/sh-sci.c struct sci_port *sci = to_sci_port(port); sci 1166 drivers/tty/serial/sh-sci.c sci->hscif_tot = r << HSSCR_TOT_SHIFT; sci 1168 drivers/tty/serial/sh-sci.c sci->rx_fifo_timeout = r; sci 1171 drivers/tty/serial/sh-sci.c timer_setup(&sci->rx_fifo_timer, rx_fifo_timer_fn, 0); sci 3483 drivers/tty/serial/sh-sci.c OF_EARLYCON_DECLARE(sci, "renesas,sci", sci_early_console_setup); sci 443 drivers/usb/serial/cp210x.c u8 sci; sci 1535 drivers/usb/serial/cp210x.c if (mode.sci == CP210X_PIN_MODE_MODEM) { sci 90 fs/nilfs2/segment.c static inline void nilfs_sc_cstage_inc(struct nilfs_sc_info *sci) sci 92 fs/nilfs2/segment.c sci->sc_stage.scnt++; sci 93 fs/nilfs2/segment.c trace_nilfs2_collection_stage_transition(sci); sci 96 fs/nilfs2/segment.c static inline void nilfs_sc_cstage_set(struct nilfs_sc_info *sci, int next_scnt) sci 98 fs/nilfs2/segment.c sci->sc_stage.scnt = next_scnt; sci 99 fs/nilfs2/segment.c trace_nilfs2_collection_stage_transition(sci); sci 102 fs/nilfs2/segment.c static inline int nilfs_sc_cstage_get(struct nilfs_sc_info *sci) sci 104 fs/nilfs2/segment.c return sci->sc_stage.scnt; sci 276 fs/nilfs2/segment.c struct nilfs_sc_info *sci = nilfs->ns_writer; sci 279 fs/nilfs2/segment.c nilfs_segctor_start_timer(sci); sci 280 fs/nilfs2/segment.c if (atomic_read(&nilfs->ns_ndirtyblks) > sci->sc_watermark) sci 281 fs/nilfs2/segment.c nilfs_segctor_do_flush(sci, 0); sci 323 fs/nilfs2/segment.c struct nilfs_sc_info *sci = nilfs->ns_writer; sci 325 fs/nilfs2/segment.c if (!sci || !sci->sc_flush_request) sci 328 fs/nilfs2/segment.c set_bit(NILFS_SC_PRIOR_FLUSH, &sci->sc_flags); sci 332 fs/nilfs2/segment.c if (sci->sc_flush_request && sci 333 fs/nilfs2/segment.c test_bit(NILFS_SC_PRIOR_FLUSH, &sci->sc_flags)) { sci 337 fs/nilfs2/segment.c nilfs_segctor_do_immediate_flush(sci); sci 349 fs/nilfs2/segment.c struct nilfs_sc_info *sci = nilfs->ns_writer; sci 363 fs/nilfs2/segment.c if (!test_bit(NILFS_SC_PRIOR_FLUSH, &sci->sc_flags)) sci 366 fs/nilfs2/segment.c nilfs_segctor_do_immediate_flush(sci); sci 393 fs/nilfs2/segment.c static void *nilfs_segctor_map_segsum_entry(struct nilfs_sc_info *sci, sci 397 fs/nilfs2/segment.c struct nilfs_segment_buffer *segbuf = sci->sc_curseg; sci 398 fs/nilfs2/segment.c unsigned int blocksize = sci->sc_super->s_blocksize; sci 416 fs/nilfs2/segment.c static int nilfs_segctor_reset_segment_buffer(struct nilfs_sc_info *sci) sci 418 fs/nilfs2/segment.c struct nilfs_segment_buffer *segbuf = sci->sc_curseg; sci 426 fs/nilfs2/segment.c err = nilfs_segbuf_reset(segbuf, flags, sci->sc_seg_ctime, sci->sc_cno); sci 432 fs/nilfs2/segment.c sci->sc_finfo_ptr.bh = sumbh; sci->sc_finfo_ptr.offset = sumbytes; sci 433 fs/nilfs2/segment.c sci->sc_binfo_ptr.bh = sumbh; sci->sc_binfo_ptr.offset = sumbytes; sci 434 fs/nilfs2/segment.c sci->sc_blk_cnt = sci->sc_datablk_cnt = 0; sci 438 fs/nilfs2/segment.c static int nilfs_segctor_feed_segment(struct nilfs_sc_info *sci) sci 440 fs/nilfs2/segment.c sci->sc_nblk_this_inc += sci->sc_curseg->sb_sum.nblocks; sci 441 fs/nilfs2/segment.c if (NILFS_SEGBUF_IS_LAST(sci->sc_curseg, &sci->sc_segbufs)) sci 446 fs/nilfs2/segment.c sci->sc_curseg = NILFS_NEXT_SEGBUF(sci->sc_curseg); sci 447 fs/nilfs2/segment.c return nilfs_segctor_reset_segment_buffer(sci); sci 450 fs/nilfs2/segment.c static int nilfs_segctor_add_super_root(struct nilfs_sc_info *sci) sci 452 fs/nilfs2/segment.c struct nilfs_segment_buffer *segbuf = sci->sc_curseg; sci 456 fs/nilfs2/segment.c err = nilfs_segctor_feed_segment(sci); sci 459 fs/nilfs2/segment.c segbuf = sci->sc_curseg; sci 471 fs/nilfs2/segment.c struct nilfs_sc_info *sci, const struct nilfs_segsum_pointer *ssp, sci 474 fs/nilfs2/segment.c unsigned int blocksize = sci->sc_super->s_blocksize; sci 478 fs/nilfs2/segment.c (!sci->sc_blk_cnt ? sizeof(struct nilfs_finfo) : 0) > sci 482 fs/nilfs2/segment.c static void nilfs_segctor_begin_finfo(struct nilfs_sc_info *sci, sci 485 fs/nilfs2/segment.c sci->sc_curseg->sb_sum.nfinfo++; sci 486 fs/nilfs2/segment.c sci->sc_binfo_ptr = sci->sc_finfo_ptr; sci 488 fs/nilfs2/segment.c sci, &sci->sc_binfo_ptr, sizeof(struct nilfs_finfo)); sci 491 fs/nilfs2/segment.c !test_bit(NILFS_SC_HAVE_DELTA, &sci->sc_flags)) sci 492 fs/nilfs2/segment.c set_bit(NILFS_SC_HAVE_DELTA, &sci->sc_flags); sci 496 fs/nilfs2/segment.c static void nilfs_segctor_end_finfo(struct nilfs_sc_info *sci, sci 504 fs/nilfs2/segment.c if (sci->sc_blk_cnt == 0) sci 514 fs/nilfs2/segment.c cno = sci->sc_cno; sci 516 fs/nilfs2/segment.c finfo = nilfs_segctor_map_segsum_entry(sci, &sci->sc_finfo_ptr, sci 519 fs/nilfs2/segment.c finfo->fi_nblocks = cpu_to_le32(sci->sc_blk_cnt); sci 520 fs/nilfs2/segment.c finfo->fi_ndatablk = cpu_to_le32(sci->sc_datablk_cnt); sci 523 fs/nilfs2/segment.c segbuf = sci->sc_curseg; sci 524 fs/nilfs2/segment.c segbuf->sb_sum.sumbytes = sci->sc_binfo_ptr.offset + sci 525 fs/nilfs2/segment.c sci->sc_super->s_blocksize * (segbuf->sb_sum.nsumblk - 1); sci 526 fs/nilfs2/segment.c sci->sc_finfo_ptr = sci->sc_binfo_ptr; sci 527 fs/nilfs2/segment.c sci->sc_blk_cnt = sci->sc_datablk_cnt = 0; sci 530 fs/nilfs2/segment.c static int nilfs_segctor_add_file_block(struct nilfs_sc_info *sci, sci 539 fs/nilfs2/segment.c segbuf = sci->sc_curseg; sci 541 fs/nilfs2/segment.c sci, &sci->sc_binfo_ptr, binfo_size); sci 543 fs/nilfs2/segment.c nilfs_segctor_end_finfo(sci, inode); sci 544 fs/nilfs2/segment.c err = nilfs_segctor_feed_segment(sci); sci 554 fs/nilfs2/segment.c if (sci->sc_blk_cnt == 0) sci 555 fs/nilfs2/segment.c nilfs_segctor_begin_finfo(sci, inode); sci 557 fs/nilfs2/segment.c nilfs_segctor_map_segsum_entry(sci, &sci->sc_binfo_ptr, binfo_size); sci 560 fs/nilfs2/segment.c sci->sc_blk_cnt++; sci 568 fs/nilfs2/segment.c static int nilfs_collect_file_data(struct nilfs_sc_info *sci, sci 577 fs/nilfs2/segment.c err = nilfs_segctor_add_file_block(sci, bh, inode, sci 580 fs/nilfs2/segment.c sci->sc_datablk_cnt++; sci 584 fs/nilfs2/segment.c static int nilfs_collect_file_node(struct nilfs_sc_info *sci, sci 591 fs/nilfs2/segment.c static int nilfs_collect_file_bmap(struct nilfs_sc_info *sci, sci 596 fs/nilfs2/segment.c return nilfs_segctor_add_file_block(sci, bh, inode, sizeof(__le64)); sci 599 fs/nilfs2/segment.c static void nilfs_write_file_data_binfo(struct nilfs_sc_info *sci, sci 604 fs/nilfs2/segment.c sci, ssp, sizeof(*binfo_v)); sci 608 fs/nilfs2/segment.c static void nilfs_write_file_node_binfo(struct nilfs_sc_info *sci, sci 613 fs/nilfs2/segment.c sci, ssp, sizeof(*vblocknr)); sci 625 fs/nilfs2/segment.c static int nilfs_collect_dat_data(struct nilfs_sc_info *sci, sci 634 fs/nilfs2/segment.c err = nilfs_segctor_add_file_block(sci, bh, inode, sizeof(__le64)); sci 636 fs/nilfs2/segment.c sci->sc_datablk_cnt++; sci 640 fs/nilfs2/segment.c static int nilfs_collect_dat_bmap(struct nilfs_sc_info *sci, sci 644 fs/nilfs2/segment.c return nilfs_segctor_add_file_block(sci, bh, inode, sci 648 fs/nilfs2/segment.c static void nilfs_write_dat_data_binfo(struct nilfs_sc_info *sci, sci 652 fs/nilfs2/segment.c __le64 *blkoff = nilfs_segctor_map_segsum_entry(sci, ssp, sci 657 fs/nilfs2/segment.c static void nilfs_write_dat_node_binfo(struct nilfs_sc_info *sci, sci 662 fs/nilfs2/segment.c nilfs_segctor_map_segsum_entry(sci, ssp, sizeof(*binfo_dat)); sci 803 fs/nilfs2/segment.c struct nilfs_sc_info *sci = container_of(work, struct nilfs_sc_info, sci 805 fs/nilfs2/segment.c struct the_nilfs *nilfs = sci->sc_super->s_fs_info; sci 807 fs/nilfs2/segment.c nilfs_dispose_list(nilfs, &sci->sc_iput_queue, 0); sci 826 fs/nilfs2/segment.c static int nilfs_segctor_clean(struct nilfs_sc_info *sci) sci 828 fs/nilfs2/segment.c return list_empty(&sci->sc_dirty_files) && sci 829 fs/nilfs2/segment.c !test_bit(NILFS_SC_DIRTY, &sci->sc_flags) && sci 830 fs/nilfs2/segment.c sci->sc_nfreesegs == 0 && sci 831 fs/nilfs2/segment.c (!nilfs_doing_gc() || list_empty(&sci->sc_gc_inodes)); sci 834 fs/nilfs2/segment.c static int nilfs_segctor_confirm(struct nilfs_sc_info *sci) sci 836 fs/nilfs2/segment.c struct the_nilfs *nilfs = sci->sc_super->s_fs_info; sci 839 fs/nilfs2/segment.c if (nilfs_test_metadata_dirty(nilfs, sci->sc_root)) sci 840 fs/nilfs2/segment.c set_bit(NILFS_SC_DIRTY, &sci->sc_flags); sci 843 fs/nilfs2/segment.c if (list_empty(&nilfs->ns_dirty_files) && nilfs_segctor_clean(sci)) sci 850 fs/nilfs2/segment.c static void nilfs_segctor_clear_metadata_dirty(struct nilfs_sc_info *sci) sci 852 fs/nilfs2/segment.c struct the_nilfs *nilfs = sci->sc_super->s_fs_info; sci 854 fs/nilfs2/segment.c nilfs_mdt_clear_dirty(sci->sc_root->ifile); sci 860 fs/nilfs2/segment.c static int nilfs_segctor_create_checkpoint(struct nilfs_sc_info *sci) sci 862 fs/nilfs2/segment.c struct the_nilfs *nilfs = sci->sc_super->s_fs_info; sci 886 fs/nilfs2/segment.c static int nilfs_segctor_fill_in_checkpoint(struct nilfs_sc_info *sci) sci 888 fs/nilfs2/segment.c struct the_nilfs *nilfs = sci->sc_super->s_fs_info; sci 902 fs/nilfs2/segment.c cpu_to_le64(atomic64_read(&sci->sc_root->inodes_count)); sci 904 fs/nilfs2/segment.c cpu_to_le64(atomic64_read(&sci->sc_root->blocks_count)); sci 906 fs/nilfs2/segment.c cpu_to_le64(sci->sc_nblk_inc + sci->sc_nblk_this_inc); sci 907 fs/nilfs2/segment.c raw_cp->cp_create = cpu_to_le64(sci->sc_seg_ctime); sci 910 fs/nilfs2/segment.c if (test_bit(NILFS_SC_HAVE_DELTA, &sci->sc_flags)) sci 915 fs/nilfs2/segment.c nilfs_write_inode_common(sci->sc_root->ifile, sci 941 fs/nilfs2/segment.c static void nilfs_segctor_fill_in_file_bmap(struct nilfs_sc_info *sci) sci 945 fs/nilfs2/segment.c list_for_each_entry(ii, &sci->sc_dirty_files, i_dirty) { sci 946 fs/nilfs2/segment.c nilfs_fill_in_file_bmap(sci->sc_root->ifile, ii); sci 951 fs/nilfs2/segment.c static void nilfs_segctor_fill_in_super_root(struct nilfs_sc_info *sci, sci 958 fs/nilfs2/segment.c bh_sr = NILFS_LAST_SEGBUF(&sci->sc_segbufs)->sb_super_root; sci 966 fs/nilfs2/segment.c nilfs->ns_nongc_ctime : sci->sc_seg_ctime); sci 1001 fs/nilfs2/segment.c static int nilfs_segctor_apply_buffers(struct nilfs_sc_info *sci, sci 1014 fs/nilfs2/segment.c err = collect(sci, bh, inode); sci 1032 fs/nilfs2/segment.c static size_t nilfs_segctor_buffer_rest(struct nilfs_sc_info *sci) sci 1035 fs/nilfs2/segment.c return sci->sc_segbuf_nblocks - sci 1036 fs/nilfs2/segment.c (sci->sc_nblk_this_inc + sci->sc_curseg->sb_sum.nblocks); sci 1039 fs/nilfs2/segment.c static int nilfs_segctor_scan_file(struct nilfs_sc_info *sci, sci 1047 fs/nilfs2/segment.c if (!(sci->sc_stage.flags & NILFS_CF_NODE)) { sci 1048 fs/nilfs2/segment.c size_t n, rest = nilfs_segctor_buffer_rest(sci); sci 1054 fs/nilfs2/segment.c sci, inode, &data_buffers, sci 1062 fs/nilfs2/segment.c if (!(sci->sc_stage.flags & NILFS_CF_NODE)) { sci 1064 fs/nilfs2/segment.c sci, inode, &data_buffers, sc_ops->collect_data); sci 1068 fs/nilfs2/segment.c sci, inode, &node_buffers, NULL); sci 1071 fs/nilfs2/segment.c sci->sc_stage.flags |= NILFS_CF_NODE; sci 1075 fs/nilfs2/segment.c sci, inode, &node_buffers, sc_ops->collect_node); sci 1081 fs/nilfs2/segment.c sci, inode, &node_buffers, sc_ops->collect_bmap); sci 1085 fs/nilfs2/segment.c nilfs_segctor_end_finfo(sci, inode); sci 1086 fs/nilfs2/segment.c sci->sc_stage.flags &= ~NILFS_CF_NODE; sci 1092 fs/nilfs2/segment.c static int nilfs_segctor_scan_file_dsync(struct nilfs_sc_info *sci, sci 1096 fs/nilfs2/segment.c size_t n, rest = nilfs_segctor_buffer_rest(sci); sci 1100 fs/nilfs2/segment.c sci->sc_dsync_start, sci 1101 fs/nilfs2/segment.c sci->sc_dsync_end); sci 1103 fs/nilfs2/segment.c err = nilfs_segctor_apply_buffers(sci, inode, &data_buffers, sci 1106 fs/nilfs2/segment.c nilfs_segctor_end_finfo(sci, inode); sci 1113 fs/nilfs2/segment.c static int nilfs_segctor_collect_blocks(struct nilfs_sc_info *sci, int mode) sci 1115 fs/nilfs2/segment.c struct the_nilfs *nilfs = sci->sc_super->s_fs_info; sci 1121 fs/nilfs2/segment.c switch (nilfs_sc_cstage_get(sci)) { sci 1124 fs/nilfs2/segment.c sci->sc_stage.flags = 0; sci 1126 fs/nilfs2/segment.c if (!test_bit(NILFS_SC_UNCLOSED, &sci->sc_flags)) { sci 1127 fs/nilfs2/segment.c sci->sc_nblk_inc = 0; sci 1128 fs/nilfs2/segment.c sci->sc_curseg->sb_sum.flags = NILFS_SS_LOGBGN; sci 1130 fs/nilfs2/segment.c nilfs_sc_cstage_set(sci, NILFS_ST_DSYNC); sci 1135 fs/nilfs2/segment.c sci->sc_stage.dirty_file_ptr = NULL; sci 1136 fs/nilfs2/segment.c sci->sc_stage.gc_inode_ptr = NULL; sci 1138 fs/nilfs2/segment.c nilfs_sc_cstage_set(sci, NILFS_ST_DAT); sci 1141 fs/nilfs2/segment.c nilfs_sc_cstage_inc(sci); /* Fall through */ sci 1144 fs/nilfs2/segment.c head = &sci->sc_gc_inodes; sci 1145 fs/nilfs2/segment.c ii = list_prepare_entry(sci->sc_stage.gc_inode_ptr, sci 1149 fs/nilfs2/segment.c sci, &ii->vfs_inode, sci 1152 fs/nilfs2/segment.c sci->sc_stage.gc_inode_ptr = list_entry( sci 1160 fs/nilfs2/segment.c sci->sc_stage.gc_inode_ptr = NULL; sci 1162 fs/nilfs2/segment.c nilfs_sc_cstage_inc(sci); /* Fall through */ sci 1164 fs/nilfs2/segment.c head = &sci->sc_dirty_files; sci 1165 fs/nilfs2/segment.c ii = list_prepare_entry(sci->sc_stage.dirty_file_ptr, head, sci 1170 fs/nilfs2/segment.c err = nilfs_segctor_scan_file(sci, &ii->vfs_inode, sci 1173 fs/nilfs2/segment.c sci->sc_stage.dirty_file_ptr = sci 1182 fs/nilfs2/segment.c sci->sc_stage.dirty_file_ptr = NULL; sci 1184 fs/nilfs2/segment.c nilfs_sc_cstage_set(sci, NILFS_ST_DONE); sci 1187 fs/nilfs2/segment.c nilfs_sc_cstage_inc(sci); sci 1188 fs/nilfs2/segment.c sci->sc_stage.flags |= NILFS_CF_IFILE_STARTED; sci 1191 fs/nilfs2/segment.c err = nilfs_segctor_scan_file(sci, sci->sc_root->ifile, sci 1195 fs/nilfs2/segment.c nilfs_sc_cstage_inc(sci); sci 1197 fs/nilfs2/segment.c err = nilfs_segctor_create_checkpoint(sci); sci 1202 fs/nilfs2/segment.c err = nilfs_segctor_scan_file(sci, nilfs->ns_cpfile, sci 1206 fs/nilfs2/segment.c nilfs_sc_cstage_inc(sci); /* Fall through */ sci 1208 fs/nilfs2/segment.c err = nilfs_sufile_freev(nilfs->ns_sufile, sci->sc_freesegs, sci 1209 fs/nilfs2/segment.c sci->sc_nfreesegs, &ndone); sci 1212 fs/nilfs2/segment.c sci->sc_freesegs, ndone, sci 1216 fs/nilfs2/segment.c sci->sc_stage.flags |= NILFS_CF_SUFREED; sci 1218 fs/nilfs2/segment.c err = nilfs_segctor_scan_file(sci, nilfs->ns_sufile, sci 1222 fs/nilfs2/segment.c nilfs_sc_cstage_inc(sci); /* Fall through */ sci 1225 fs/nilfs2/segment.c err = nilfs_segctor_scan_file(sci, nilfs->ns_dat, sci 1230 fs/nilfs2/segment.c nilfs_sc_cstage_set(sci, NILFS_ST_DONE); sci 1233 fs/nilfs2/segment.c nilfs_sc_cstage_inc(sci); /* Fall through */ sci 1237 fs/nilfs2/segment.c err = nilfs_segctor_add_super_root(sci); sci 1242 fs/nilfs2/segment.c sci->sc_curseg->sb_sum.flags |= NILFS_SS_LOGEND; sci 1243 fs/nilfs2/segment.c nilfs_sc_cstage_set(sci, NILFS_ST_DONE); sci 1247 fs/nilfs2/segment.c sci->sc_curseg->sb_sum.flags |= NILFS_SS_SYNDT; sci 1248 fs/nilfs2/segment.c ii = sci->sc_dsync_inode; sci 1252 fs/nilfs2/segment.c err = nilfs_segctor_scan_file_dsync(sci, &ii->vfs_inode); sci 1255 fs/nilfs2/segment.c sci->sc_curseg->sb_sum.flags |= NILFS_SS_LOGEND; sci 1256 fs/nilfs2/segment.c nilfs_sc_cstage_set(sci, NILFS_ST_DONE); sci 1273 fs/nilfs2/segment.c static int nilfs_segctor_begin_construction(struct nilfs_sc_info *sci, sci 1280 fs/nilfs2/segment.c segbuf = nilfs_segbuf_new(sci->sc_super); sci 1284 fs/nilfs2/segment.c if (list_empty(&sci->sc_write_logs)) { sci 1300 fs/nilfs2/segment.c prev = NILFS_LAST_SEGBUF(&sci->sc_write_logs); sci 1323 fs/nilfs2/segment.c BUG_ON(!list_empty(&sci->sc_segbufs)); sci 1324 fs/nilfs2/segment.c list_add_tail(&segbuf->sb_list, &sci->sc_segbufs); sci 1325 fs/nilfs2/segment.c sci->sc_segbuf_nblocks = segbuf->sb_rest_blocks; sci 1333 fs/nilfs2/segment.c static int nilfs_segctor_extend_segments(struct nilfs_sc_info *sci, sci 1342 fs/nilfs2/segment.c prev = NILFS_LAST_SEGBUF(&sci->sc_segbufs); sci 1356 fs/nilfs2/segment.c segbuf = nilfs_segbuf_new(sci->sc_super); sci 1362 fs/nilfs2/segment.c sci->sc_segbuf_nblocks += segbuf->sb_rest_blocks; sci 1375 fs/nilfs2/segment.c list_splice_tail(&list, &sci->sc_segbufs); sci 1428 fs/nilfs2/segment.c static void nilfs_segctor_update_segusage(struct nilfs_sc_info *sci, sci 1435 fs/nilfs2/segment.c list_for_each_entry(segbuf, &sci->sc_segbufs, sb_list) { sci 1440 fs/nilfs2/segment.c sci->sc_seg_ctime); sci 1463 fs/nilfs2/segment.c static void nilfs_segctor_truncate_segments(struct nilfs_sc_info *sci, sci 1470 fs/nilfs2/segment.c list_for_each_entry_continue(segbuf, &sci->sc_segbufs, sb_list) { sci 1471 fs/nilfs2/segment.c sci->sc_segbuf_nblocks -= segbuf->sb_rest_blocks; sci 1475 fs/nilfs2/segment.c nilfs_truncate_logs(&sci->sc_segbufs, last); sci 1479 fs/nilfs2/segment.c static int nilfs_segctor_collect(struct nilfs_sc_info *sci, sci 1482 fs/nilfs2/segment.c struct nilfs_cstage prev_stage = sci->sc_stage; sci 1487 fs/nilfs2/segment.c sci->sc_nblk_this_inc = 0; sci 1488 fs/nilfs2/segment.c sci->sc_curseg = NILFS_FIRST_SEGBUF(&sci->sc_segbufs); sci 1490 fs/nilfs2/segment.c err = nilfs_segctor_reset_segment_buffer(sci); sci 1494 fs/nilfs2/segment.c err = nilfs_segctor_collect_blocks(sci, mode); sci 1495 fs/nilfs2/segment.c sci->sc_nblk_this_inc += sci->sc_curseg->sb_sum.nblocks; sci 1504 fs/nilfs2/segment.c nilfs_sc_cstage_get(sci) < NILFS_ST_CPFILE) sci 1507 fs/nilfs2/segment.c nilfs_clear_logs(&sci->sc_segbufs); sci 1509 fs/nilfs2/segment.c if (sci->sc_stage.flags & NILFS_CF_SUFREED) { sci 1511 fs/nilfs2/segment.c sci->sc_freesegs, sci 1512 fs/nilfs2/segment.c sci->sc_nfreesegs, sci 1515 fs/nilfs2/segment.c sci->sc_stage.flags &= ~NILFS_CF_SUFREED; sci 1518 fs/nilfs2/segment.c err = nilfs_segctor_extend_segments(sci, nilfs, nadd); sci 1523 fs/nilfs2/segment.c sci->sc_stage = prev_stage; sci 1525 fs/nilfs2/segment.c nilfs_segctor_truncate_segments(sci, sci->sc_curseg, nilfs->ns_sufile); sci 1542 fs/nilfs2/segment.c nilfs_segctor_update_payload_blocknr(struct nilfs_sc_info *sci, sci 1570 fs/nilfs2/segment.c sci, &ssp, sizeof(*finfo)); sci 1595 fs/nilfs2/segment.c sc_op->write_data_binfo(sci, &ssp, &binfo); sci 1597 fs/nilfs2/segment.c sc_op->write_node_binfo(sci, &ssp, &binfo); sci 1614 fs/nilfs2/segment.c static int nilfs_segctor_assign(struct nilfs_sc_info *sci, int mode) sci 1619 fs/nilfs2/segment.c list_for_each_entry(segbuf, &sci->sc_segbufs, sb_list) { sci 1620 fs/nilfs2/segment.c err = nilfs_segctor_update_payload_blocknr(sci, segbuf, mode); sci 1643 fs/nilfs2/segment.c static void nilfs_segctor_prepare_write(struct nilfs_sc_info *sci) sci 1648 fs/nilfs2/segment.c list_for_each_entry(segbuf, &sci->sc_segbufs, sb_list) { sci 1692 fs/nilfs2/segment.c static int nilfs_segctor_write(struct nilfs_sc_info *sci, sci 1697 fs/nilfs2/segment.c ret = nilfs_write_logs(&sci->sc_segbufs, nilfs); sci 1698 fs/nilfs2/segment.c list_splice_tail_init(&sci->sc_segbufs, &sci->sc_write_logs); sci 1781 fs/nilfs2/segment.c static void nilfs_segctor_abort_construction(struct nilfs_sc_info *sci, sci 1787 fs/nilfs2/segment.c list_splice_tail_init(&sci->sc_write_logs, &logs); sci 1791 fs/nilfs2/segment.c list_splice_tail_init(&sci->sc_segbufs, &logs); sci 1795 fs/nilfs2/segment.c if (sci->sc_stage.flags & NILFS_CF_SUFREED) { sci 1797 fs/nilfs2/segment.c sci->sc_freesegs, sci 1798 fs/nilfs2/segment.c sci->sc_nfreesegs, sci 1817 fs/nilfs2/segment.c static void nilfs_segctor_complete_write(struct nilfs_sc_info *sci) sci 1821 fs/nilfs2/segment.c struct the_nilfs *nilfs = sci->sc_super->s_fs_info; sci 1824 fs/nilfs2/segment.c list_for_each_entry(segbuf, &sci->sc_write_logs, sb_list) { sci 1873 fs/nilfs2/segment.c set_bit(NILFS_SC_UNCLOSED, &sci->sc_flags); sci 1874 fs/nilfs2/segment.c sci->sc_lseg_stime = jiffies; sci 1877 fs/nilfs2/segment.c clear_bit(NILFS_SC_UNCLOSED, &sci->sc_flags); sci 1889 fs/nilfs2/segment.c nilfs_drop_collected_inodes(&sci->sc_dirty_files); sci 1892 fs/nilfs2/segment.c nilfs_drop_collected_inodes(&sci->sc_gc_inodes); sci 1894 fs/nilfs2/segment.c nilfs->ns_nongc_ctime = sci->sc_seg_ctime; sci 1896 fs/nilfs2/segment.c sci->sc_nblk_inc += sci->sc_nblk_this_inc; sci 1898 fs/nilfs2/segment.c segbuf = NILFS_LAST_SEGBUF(&sci->sc_write_logs); sci 1906 fs/nilfs2/segment.c clear_bit(NILFS_SC_HAVE_DELTA, &sci->sc_flags); sci 1907 fs/nilfs2/segment.c clear_bit(NILFS_SC_DIRTY, &sci->sc_flags); sci 1908 fs/nilfs2/segment.c set_bit(NILFS_SC_SUPER_ROOT, &sci->sc_flags); sci 1909 fs/nilfs2/segment.c nilfs_segctor_clear_metadata_dirty(sci); sci 1911 fs/nilfs2/segment.c clear_bit(NILFS_SC_SUPER_ROOT, &sci->sc_flags); sci 1914 fs/nilfs2/segment.c static int nilfs_segctor_wait(struct nilfs_sc_info *sci) sci 1918 fs/nilfs2/segment.c ret = nilfs_wait_on_logs(&sci->sc_write_logs); sci 1920 fs/nilfs2/segment.c nilfs_segctor_complete_write(sci); sci 1921 fs/nilfs2/segment.c nilfs_destroy_logs(&sci->sc_write_logs); sci 1926 fs/nilfs2/segment.c static int nilfs_segctor_collect_dirty_files(struct nilfs_sc_info *sci, sci 1930 fs/nilfs2/segment.c struct inode *ifile = sci->sc_root->ifile; sci 1943 fs/nilfs2/segment.c nilfs_msg(sci->sc_super, KERN_WARNING, sci 1962 fs/nilfs2/segment.c list_move_tail(&ii->i_dirty, &sci->sc_dirty_files); sci 1969 fs/nilfs2/segment.c static void nilfs_segctor_drop_written_files(struct nilfs_sc_info *sci, sci 1973 fs/nilfs2/segment.c int during_mount = !(sci->sc_super->s_flags & SB_ACTIVE); sci 1977 fs/nilfs2/segment.c list_for_each_entry_safe(ii, n, &sci->sc_dirty_files, i_dirty) { sci 1991 fs/nilfs2/segment.c list_add_tail(&ii->i_dirty, &sci->sc_iput_queue); sci 2002 fs/nilfs2/segment.c schedule_work(&sci->sc_iput_work); sci 2008 fs/nilfs2/segment.c static int nilfs_segctor_do_construct(struct nilfs_sc_info *sci, int mode) sci 2010 fs/nilfs2/segment.c struct the_nilfs *nilfs = sci->sc_super->s_fs_info; sci 2013 fs/nilfs2/segment.c nilfs_sc_cstage_set(sci, NILFS_ST_INIT); sci 2014 fs/nilfs2/segment.c sci->sc_cno = nilfs->ns_cno; sci 2016 fs/nilfs2/segment.c err = nilfs_segctor_collect_dirty_files(sci, nilfs); sci 2020 fs/nilfs2/segment.c if (nilfs_test_metadata_dirty(nilfs, sci->sc_root)) sci 2021 fs/nilfs2/segment.c set_bit(NILFS_SC_DIRTY, &sci->sc_flags); sci 2023 fs/nilfs2/segment.c if (nilfs_segctor_clean(sci)) sci 2027 fs/nilfs2/segment.c sci->sc_stage.flags &= ~NILFS_CF_HISTORY_MASK; sci 2029 fs/nilfs2/segment.c err = nilfs_segctor_begin_construction(sci, nilfs); sci 2034 fs/nilfs2/segment.c sci->sc_seg_ctime = ktime_get_real_seconds(); sci 2036 fs/nilfs2/segment.c err = nilfs_segctor_collect(sci, nilfs, mode); sci 2041 fs/nilfs2/segment.c if (nilfs_sc_cstage_get(sci) == NILFS_ST_DONE && sci 2042 fs/nilfs2/segment.c nilfs_segbuf_empty(sci->sc_curseg)) { sci 2043 fs/nilfs2/segment.c nilfs_segctor_abort_construction(sci, nilfs, 1); sci 2047 fs/nilfs2/segment.c err = nilfs_segctor_assign(sci, mode); sci 2051 fs/nilfs2/segment.c if (sci->sc_stage.flags & NILFS_CF_IFILE_STARTED) sci 2052 fs/nilfs2/segment.c nilfs_segctor_fill_in_file_bmap(sci); sci 2055 fs/nilfs2/segment.c nilfs_sc_cstage_get(sci) >= NILFS_ST_CPFILE) { sci 2056 fs/nilfs2/segment.c err = nilfs_segctor_fill_in_checkpoint(sci); sci 2060 fs/nilfs2/segment.c nilfs_segctor_fill_in_super_root(sci, nilfs); sci 2062 fs/nilfs2/segment.c nilfs_segctor_update_segusage(sci, nilfs->ns_sufile); sci 2065 fs/nilfs2/segment.c nilfs_segctor_prepare_write(sci); sci 2067 fs/nilfs2/segment.c nilfs_add_checksums_on_logs(&sci->sc_segbufs, sci 2070 fs/nilfs2/segment.c err = nilfs_segctor_write(sci, nilfs); sci 2074 fs/nilfs2/segment.c if (nilfs_sc_cstage_get(sci) == NILFS_ST_DONE || sci 2083 fs/nilfs2/segment.c err = nilfs_segctor_wait(sci); sci 2087 fs/nilfs2/segment.c } while (nilfs_sc_cstage_get(sci) != NILFS_ST_DONE); sci 2090 fs/nilfs2/segment.c nilfs_segctor_drop_written_files(sci, nilfs); sci 2094 fs/nilfs2/segment.c if (sci->sc_stage.flags & NILFS_CF_IFILE_STARTED) sci 2095 fs/nilfs2/segment.c nilfs_redirty_inodes(&sci->sc_dirty_files); sci 2099 fs/nilfs2/segment.c nilfs_redirty_inodes(&sci->sc_gc_inodes); sci 2100 fs/nilfs2/segment.c nilfs_segctor_abort_construction(sci, nilfs, err); sci 2112 fs/nilfs2/segment.c static void nilfs_segctor_start_timer(struct nilfs_sc_info *sci) sci 2114 fs/nilfs2/segment.c spin_lock(&sci->sc_state_lock); sci 2115 fs/nilfs2/segment.c if (!(sci->sc_state & NILFS_SEGCTOR_COMMIT)) { sci 2116 fs/nilfs2/segment.c sci->sc_timer.expires = jiffies + sci->sc_interval; sci 2117 fs/nilfs2/segment.c add_timer(&sci->sc_timer); sci 2118 fs/nilfs2/segment.c sci->sc_state |= NILFS_SEGCTOR_COMMIT; sci 2120 fs/nilfs2/segment.c spin_unlock(&sci->sc_state_lock); sci 2123 fs/nilfs2/segment.c static void nilfs_segctor_do_flush(struct nilfs_sc_info *sci, int bn) sci 2125 fs/nilfs2/segment.c spin_lock(&sci->sc_state_lock); sci 2126 fs/nilfs2/segment.c if (!(sci->sc_flush_request & BIT(bn))) { sci 2127 fs/nilfs2/segment.c unsigned long prev_req = sci->sc_flush_request; sci 2129 fs/nilfs2/segment.c sci->sc_flush_request |= BIT(bn); sci 2131 fs/nilfs2/segment.c wake_up(&sci->sc_wait_daemon); sci 2133 fs/nilfs2/segment.c spin_unlock(&sci->sc_state_lock); sci 2144 fs/nilfs2/segment.c struct nilfs_sc_info *sci = nilfs->ns_writer; sci 2146 fs/nilfs2/segment.c if (!sci || nilfs_doing_construction()) sci 2148 fs/nilfs2/segment.c nilfs_segctor_do_flush(sci, NILFS_MDT_INODE(sb, ino) ? ino : 0); sci 2159 fs/nilfs2/segment.c static int nilfs_segctor_sync(struct nilfs_sc_info *sci) sci 2164 fs/nilfs2/segment.c spin_lock(&sci->sc_state_lock); sci 2168 fs/nilfs2/segment.c wait_req.seq = ++sci->sc_seq_request; sci 2169 fs/nilfs2/segment.c spin_unlock(&sci->sc_state_lock); sci 2172 fs/nilfs2/segment.c add_wait_queue(&sci->sc_wait_request, &wait_req.wq); sci 2174 fs/nilfs2/segment.c wake_up(&sci->sc_wait_daemon); sci 2188 fs/nilfs2/segment.c finish_wait(&sci->sc_wait_request, &wait_req.wq); sci 2192 fs/nilfs2/segment.c static void nilfs_segctor_wakeup(struct nilfs_sc_info *sci, int err) sci 2197 fs/nilfs2/segment.c spin_lock_irqsave(&sci->sc_wait_request.lock, flags); sci 2198 fs/nilfs2/segment.c list_for_each_entry_safe(wrq, n, &sci->sc_wait_request.head, wq.entry) { sci 2200 fs/nilfs2/segment.c nilfs_cnt32_ge(sci->sc_seq_done, wrq->seq)) { sci 2210 fs/nilfs2/segment.c spin_unlock_irqrestore(&sci->sc_wait_request.lock, flags); sci 2233 fs/nilfs2/segment.c struct nilfs_sc_info *sci = nilfs->ns_writer; sci 2237 fs/nilfs2/segment.c if (!sci) sci 2243 fs/nilfs2/segment.c err = nilfs_segctor_sync(sci); sci 2271 fs/nilfs2/segment.c struct nilfs_sc_info *sci = nilfs->ns_writer; sci 2276 fs/nilfs2/segment.c if (!sci) sci 2284 fs/nilfs2/segment.c test_bit(NILFS_SC_UNCLOSED, &sci->sc_flags) || sci 2287 fs/nilfs2/segment.c err = nilfs_segctor_sync(sci); sci 2299 fs/nilfs2/segment.c sci->sc_dsync_inode = ii; sci 2300 fs/nilfs2/segment.c sci->sc_dsync_start = start; sci 2301 fs/nilfs2/segment.c sci->sc_dsync_end = end; sci 2303 fs/nilfs2/segment.c err = nilfs_segctor_do_construct(sci, SC_LSEG_DSYNC); sci 2318 fs/nilfs2/segment.c static void nilfs_segctor_accept(struct nilfs_sc_info *sci) sci 2320 fs/nilfs2/segment.c spin_lock(&sci->sc_state_lock); sci 2321 fs/nilfs2/segment.c sci->sc_seq_accepted = sci->sc_seq_request; sci 2322 fs/nilfs2/segment.c spin_unlock(&sci->sc_state_lock); sci 2323 fs/nilfs2/segment.c del_timer_sync(&sci->sc_timer); sci 2332 fs/nilfs2/segment.c static void nilfs_segctor_notify(struct nilfs_sc_info *sci, int mode, int err) sci 2335 fs/nilfs2/segment.c spin_lock(&sci->sc_state_lock); sci 2338 fs/nilfs2/segment.c sci->sc_state &= ~NILFS_SEGCTOR_COMMIT; sci 2339 fs/nilfs2/segment.c sci->sc_seq_done = sci->sc_seq_accepted; sci 2340 fs/nilfs2/segment.c nilfs_segctor_wakeup(sci, err); sci 2341 fs/nilfs2/segment.c sci->sc_flush_request = 0; sci 2344 fs/nilfs2/segment.c sci->sc_flush_request &= ~FLUSH_FILE_BIT; sci 2346 fs/nilfs2/segment.c sci->sc_flush_request &= ~FLUSH_DAT_BIT; sci 2349 fs/nilfs2/segment.c if ((sci->sc_state & NILFS_SEGCTOR_COMMIT) && sci 2350 fs/nilfs2/segment.c time_before(jiffies, sci->sc_timer.expires)) sci 2351 fs/nilfs2/segment.c add_timer(&sci->sc_timer); sci 2353 fs/nilfs2/segment.c spin_unlock(&sci->sc_state_lock); sci 2361 fs/nilfs2/segment.c static int nilfs_segctor_construct(struct nilfs_sc_info *sci, int mode) sci 2363 fs/nilfs2/segment.c struct the_nilfs *nilfs = sci->sc_super->s_fs_info; sci 2367 fs/nilfs2/segment.c nilfs_segctor_accept(sci); sci 2371 fs/nilfs2/segment.c if (!nilfs_segctor_confirm(sci)) sci 2372 fs/nilfs2/segment.c err = nilfs_segctor_do_construct(sci, mode); sci 2377 fs/nilfs2/segment.c if (test_bit(NILFS_SC_SUPER_ROOT, &sci->sc_flags) && sci 2381 fs/nilfs2/segment.c sbp = nilfs_prepare_super(sci->sc_super, sci 2385 fs/nilfs2/segment.c err = nilfs_commit_super(sci->sc_super, sci 2392 fs/nilfs2/segment.c nilfs_segctor_notify(sci, mode, err); sci 2398 fs/nilfs2/segment.c struct nilfs_sc_info *sci = from_timer(sci, t, sc_timer); sci 2400 fs/nilfs2/segment.c wake_up_process(sci->sc_timer_task); sci 2422 fs/nilfs2/segment.c struct nilfs_sc_info *sci = nilfs->ns_writer; sci 2426 fs/nilfs2/segment.c if (unlikely(!sci)) sci 2441 fs/nilfs2/segment.c sci->sc_freesegs = kbufs[4]; sci 2442 fs/nilfs2/segment.c sci->sc_nfreesegs = argv[4].v_nmembs; sci 2443 fs/nilfs2/segment.c list_splice_tail_init(&nilfs->ns_gc_inodes, &sci->sc_gc_inodes); sci 2446 fs/nilfs2/segment.c err = nilfs_segctor_construct(sci, SC_LSEG_SR); sci 2447 fs/nilfs2/segment.c nilfs_remove_written_gcinodes(nilfs, &sci->sc_gc_inodes); sci 2454 fs/nilfs2/segment.c schedule_timeout(sci->sc_interval); sci 2457 fs/nilfs2/segment.c int ret = nilfs_discard_segments(nilfs, sci->sc_freesegs, sci 2458 fs/nilfs2/segment.c sci->sc_nfreesegs); sci 2468 fs/nilfs2/segment.c sci->sc_freesegs = NULL; sci 2469 fs/nilfs2/segment.c sci->sc_nfreesegs = 0; sci 2475 fs/nilfs2/segment.c static void nilfs_segctor_thread_construct(struct nilfs_sc_info *sci, int mode) sci 2479 fs/nilfs2/segment.c nilfs_transaction_lock(sci->sc_super, &ti, 0); sci 2480 fs/nilfs2/segment.c nilfs_segctor_construct(sci, mode); sci 2487 fs/nilfs2/segment.c if (test_bit(NILFS_SC_UNCLOSED, &sci->sc_flags)) sci 2488 fs/nilfs2/segment.c nilfs_segctor_start_timer(sci); sci 2490 fs/nilfs2/segment.c nilfs_transaction_unlock(sci->sc_super); sci 2493 fs/nilfs2/segment.c static void nilfs_segctor_do_immediate_flush(struct nilfs_sc_info *sci) sci 2497 fs/nilfs2/segment.c spin_lock(&sci->sc_state_lock); sci 2498 fs/nilfs2/segment.c mode = (sci->sc_flush_request & FLUSH_DAT_BIT) ? sci 2500 fs/nilfs2/segment.c spin_unlock(&sci->sc_state_lock); sci 2503 fs/nilfs2/segment.c nilfs_segctor_do_construct(sci, mode); sci 2505 fs/nilfs2/segment.c spin_lock(&sci->sc_state_lock); sci 2506 fs/nilfs2/segment.c sci->sc_flush_request &= (mode == SC_FLUSH_FILE) ? sci 2508 fs/nilfs2/segment.c spin_unlock(&sci->sc_state_lock); sci 2510 fs/nilfs2/segment.c clear_bit(NILFS_SC_PRIOR_FLUSH, &sci->sc_flags); sci 2513 fs/nilfs2/segment.c static int nilfs_segctor_flush_mode(struct nilfs_sc_info *sci) sci 2515 fs/nilfs2/segment.c if (!test_bit(NILFS_SC_UNCLOSED, &sci->sc_flags) || sci 2516 fs/nilfs2/segment.c time_before(jiffies, sci->sc_lseg_stime + sci->sc_mjcp_freq)) { sci 2517 fs/nilfs2/segment.c if (!(sci->sc_flush_request & ~FLUSH_FILE_BIT)) sci 2519 fs/nilfs2/segment.c else if (!(sci->sc_flush_request & ~FLUSH_DAT_BIT)) sci 2534 fs/nilfs2/segment.c struct nilfs_sc_info *sci = (struct nilfs_sc_info *)arg; sci 2535 fs/nilfs2/segment.c struct the_nilfs *nilfs = sci->sc_super->s_fs_info; sci 2538 fs/nilfs2/segment.c sci->sc_timer_task = current; sci 2541 fs/nilfs2/segment.c sci->sc_task = current; sci 2542 fs/nilfs2/segment.c wake_up(&sci->sc_wait_task); /* for nilfs_segctor_start_thread() */ sci 2543 fs/nilfs2/segment.c nilfs_msg(sci->sc_super, KERN_INFO, sci 2545 fs/nilfs2/segment.c sci->sc_interval / HZ, sci->sc_mjcp_freq / HZ); sci 2547 fs/nilfs2/segment.c spin_lock(&sci->sc_state_lock); sci 2552 fs/nilfs2/segment.c if (sci->sc_state & NILFS_SEGCTOR_QUIT) sci 2555 fs/nilfs2/segment.c if (timeout || sci->sc_seq_request != sci->sc_seq_done) sci 2557 fs/nilfs2/segment.c else if (sci->sc_flush_request) sci 2558 fs/nilfs2/segment.c mode = nilfs_segctor_flush_mode(sci); sci 2562 fs/nilfs2/segment.c spin_unlock(&sci->sc_state_lock); sci 2563 fs/nilfs2/segment.c nilfs_segctor_thread_construct(sci, mode); sci 2564 fs/nilfs2/segment.c spin_lock(&sci->sc_state_lock); sci 2570 fs/nilfs2/segment.c spin_unlock(&sci->sc_state_lock); sci 2572 fs/nilfs2/segment.c spin_lock(&sci->sc_state_lock); sci 2577 fs/nilfs2/segment.c prepare_to_wait(&sci->sc_wait_daemon, &wait, sci 2580 fs/nilfs2/segment.c if (sci->sc_seq_request != sci->sc_seq_done) sci 2582 fs/nilfs2/segment.c else if (sci->sc_flush_request) sci 2584 fs/nilfs2/segment.c else if (sci->sc_state & NILFS_SEGCTOR_COMMIT) sci 2586 fs/nilfs2/segment.c sci->sc_timer.expires); sci 2589 fs/nilfs2/segment.c spin_unlock(&sci->sc_state_lock); sci 2591 fs/nilfs2/segment.c spin_lock(&sci->sc_state_lock); sci 2593 fs/nilfs2/segment.c finish_wait(&sci->sc_wait_daemon, &wait); sci 2594 fs/nilfs2/segment.c timeout = ((sci->sc_state & NILFS_SEGCTOR_COMMIT) && sci 2595 fs/nilfs2/segment.c time_after_eq(jiffies, sci->sc_timer.expires)); sci 2603 fs/nilfs2/segment.c spin_unlock(&sci->sc_state_lock); sci 2606 fs/nilfs2/segment.c sci->sc_task = NULL; sci 2607 fs/nilfs2/segment.c wake_up(&sci->sc_wait_task); /* for nilfs_segctor_kill_thread() */ sci 2611 fs/nilfs2/segment.c static int nilfs_segctor_start_thread(struct nilfs_sc_info *sci) sci 2615 fs/nilfs2/segment.c t = kthread_run(nilfs_segctor_thread, sci, "segctord"); sci 2619 fs/nilfs2/segment.c nilfs_msg(sci->sc_super, KERN_ERR, sci 2623 fs/nilfs2/segment.c wait_event(sci->sc_wait_task, sci->sc_task != NULL); sci 2627 fs/nilfs2/segment.c static void nilfs_segctor_kill_thread(struct nilfs_sc_info *sci) sci 2628 fs/nilfs2/segment.c __acquires(&sci->sc_state_lock) sci 2629 fs/nilfs2/segment.c __releases(&sci->sc_state_lock) sci 2631 fs/nilfs2/segment.c sci->sc_state |= NILFS_SEGCTOR_QUIT; sci 2633 fs/nilfs2/segment.c while (sci->sc_task) { sci 2634 fs/nilfs2/segment.c wake_up(&sci->sc_wait_daemon); sci 2635 fs/nilfs2/segment.c spin_unlock(&sci->sc_state_lock); sci 2636 fs/nilfs2/segment.c wait_event(sci->sc_wait_task, sci->sc_task == NULL); sci 2637 fs/nilfs2/segment.c spin_lock(&sci->sc_state_lock); sci 2648 fs/nilfs2/segment.c struct nilfs_sc_info *sci; sci 2650 fs/nilfs2/segment.c sci = kzalloc(sizeof(*sci), GFP_KERNEL); sci 2651 fs/nilfs2/segment.c if (!sci) sci 2654 fs/nilfs2/segment.c sci->sc_super = sb; sci 2657 fs/nilfs2/segment.c sci->sc_root = root; sci 2659 fs/nilfs2/segment.c init_waitqueue_head(&sci->sc_wait_request); sci 2660 fs/nilfs2/segment.c init_waitqueue_head(&sci->sc_wait_daemon); sci 2661 fs/nilfs2/segment.c init_waitqueue_head(&sci->sc_wait_task); sci 2662 fs/nilfs2/segment.c spin_lock_init(&sci->sc_state_lock); sci 2663 fs/nilfs2/segment.c INIT_LIST_HEAD(&sci->sc_dirty_files); sci 2664 fs/nilfs2/segment.c INIT_LIST_HEAD(&sci->sc_segbufs); sci 2665 fs/nilfs2/segment.c INIT_LIST_HEAD(&sci->sc_write_logs); sci 2666 fs/nilfs2/segment.c INIT_LIST_HEAD(&sci->sc_gc_inodes); sci 2667 fs/nilfs2/segment.c INIT_LIST_HEAD(&sci->sc_iput_queue); sci 2668 fs/nilfs2/segment.c INIT_WORK(&sci->sc_iput_work, nilfs_iput_work_func); sci 2669 fs/nilfs2/segment.c timer_setup(&sci->sc_timer, nilfs_construction_timeout, 0); sci 2671 fs/nilfs2/segment.c sci->sc_interval = HZ * NILFS_SC_DEFAULT_TIMEOUT; sci 2672 fs/nilfs2/segment.c sci->sc_mjcp_freq = HZ * NILFS_SC_DEFAULT_SR_FREQ; sci 2673 fs/nilfs2/segment.c sci->sc_watermark = NILFS_SC_DEFAULT_WATERMARK; sci 2676 fs/nilfs2/segment.c sci->sc_interval = HZ * nilfs->ns_interval; sci 2678 fs/nilfs2/segment.c sci->sc_watermark = nilfs->ns_watermark; sci 2679 fs/nilfs2/segment.c return sci; sci 2682 fs/nilfs2/segment.c static void nilfs_segctor_write_out(struct nilfs_sc_info *sci) sci 2693 fs/nilfs2/segment.c nilfs_transaction_lock(sci->sc_super, &ti, 0); sci 2694 fs/nilfs2/segment.c ret = nilfs_segctor_construct(sci, SC_LSEG_SR); sci 2695 fs/nilfs2/segment.c nilfs_transaction_unlock(sci->sc_super); sci 2697 fs/nilfs2/segment.c flush_work(&sci->sc_iput_work); sci 2710 fs/nilfs2/segment.c static void nilfs_segctor_destroy(struct nilfs_sc_info *sci) sci 2712 fs/nilfs2/segment.c struct the_nilfs *nilfs = sci->sc_super->s_fs_info; sci 2717 fs/nilfs2/segment.c spin_lock(&sci->sc_state_lock); sci 2718 fs/nilfs2/segment.c nilfs_segctor_kill_thread(sci); sci 2719 fs/nilfs2/segment.c flag = ((sci->sc_state & NILFS_SEGCTOR_COMMIT) || sci->sc_flush_request sci 2720 fs/nilfs2/segment.c || sci->sc_seq_request != sci->sc_seq_done); sci 2721 fs/nilfs2/segment.c spin_unlock(&sci->sc_state_lock); sci 2723 fs/nilfs2/segment.c if (flush_work(&sci->sc_iput_work)) sci 2726 fs/nilfs2/segment.c if (flag || !nilfs_segctor_confirm(sci)) sci 2727 fs/nilfs2/segment.c nilfs_segctor_write_out(sci); sci 2729 fs/nilfs2/segment.c if (!list_empty(&sci->sc_dirty_files)) { sci 2730 fs/nilfs2/segment.c nilfs_msg(sci->sc_super, KERN_WARNING, sci 2732 fs/nilfs2/segment.c nilfs_dispose_list(nilfs, &sci->sc_dirty_files, 1); sci 2735 fs/nilfs2/segment.c if (!list_empty(&sci->sc_iput_queue)) { sci 2736 fs/nilfs2/segment.c nilfs_msg(sci->sc_super, KERN_WARNING, sci 2738 fs/nilfs2/segment.c nilfs_dispose_list(nilfs, &sci->sc_iput_queue, 1); sci 2741 fs/nilfs2/segment.c WARN_ON(!list_empty(&sci->sc_segbufs)); sci 2742 fs/nilfs2/segment.c WARN_ON(!list_empty(&sci->sc_write_logs)); sci 2744 fs/nilfs2/segment.c nilfs_put_root(sci->sc_root); sci 2748 fs/nilfs2/segment.c del_timer_sync(&sci->sc_timer); sci 2749 fs/nilfs2/segment.c kfree(sci); sci 27 include/trace/events/nilfs2.h TP_PROTO(struct nilfs_sc_info *sci), sci 29 include/trace/events/nilfs2.h TP_ARGS(sci), sci 32 include/trace/events/nilfs2.h __field(void *, sci) sci 37 include/trace/events/nilfs2.h __entry->sci = sci; sci 38 include/trace/events/nilfs2.h __entry->stage = sci->sc_stage.scnt; sci 42 include/trace/events/nilfs2.h __entry->sci, sci 1137 net/6lowpan/iphc.c struct lowpan_iphc_ctx *dci, *sci, dci_entry, sci_entry; sci 1178 net/6lowpan/iphc.c sci = lowpan_iphc_ctx_get_by_addr(dev, &hdr->saddr); sci 1179 net/6lowpan/iphc.c if (sci) { sci 1180 net/6lowpan/iphc.c memcpy(&sci_entry, sci, sizeof(*sci)); sci 1181 net/6lowpan/iphc.c cid |= (sci->id << 4); sci 1233 net/6lowpan/iphc.c if (sci) {